MyBatis原来做的是这些事
mybatis 这些 原来
2023-09-14 09:14:06 时间
一、前言
在使用MyBatis之前,在学校的编程课里,我们最先接触的就是JDBC(Java Database Connectivity)Java数据库连接。
二、JDBC流程
1、注册驱动
// 1、注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
2、获取连接
public class Demo1 {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
// 1、注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 2、数据库连接基本信息url、user、password
String url = "jdbc:mysql://localhost:3306/seckill?useSSL=false&useUnicode=true&characterEncoding=UTF-8&useAffectedRows=true&nullCatalogMeansCurrent=true&allowMultiQueries=true&serverTimezone=GMT%2B8";
String user = "root";
String password = "123456";
// 3、获取连接
Connection conn = DriverManager.getConnection(url, user, password);
log.info(">>>>>>>>>>>>【{}】", conn);
}
3、创建Statement或Preparestatement
public static void main(String[] args) throws SQLException, IOException, ClassNotFoundException {
initDataSource();// 初始化连接池
try{// 查询数据
String sql = "select * from sec_kill";
Statement statement = connection.createStatement();
}catch (Exception e){
log.info(">>>>>>>>>>>>", e);
}
}
注:Preparestatement有预防SQL注入的功效
4、executeQuery或executeUpdate执行查询/更新
public static void main(String[] args) throws SQLException, IOException, ClassNotFoundException {
initDataSource();// 初始化连接池
try{// 查询数据
String sql = "select * from sec_kill";
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
long id = rs.getLong("sec_kill_id");
String name = rs.getString("name");
log.info(">>>>>>id:{},name:{}", id, name);
}
}catch (Exception e){
log.info(">>>>>>>>>>>>", e);
}
}
5、涉及事务时(增修改一致性)
5.1、setAutoCommit设置是否自动提交
5.2、commit提交事务
5.3、rollback抛异常手动回滚事务
try {
// 开起事务
conn.setAutoCommit(false);
// 积分扣减
// 下单
// 提交事务
conn.commit();
} catch (Exception e) {
System.out.println(e.getMessage());
// 事务回滚
conn.rollback();
}
注:需要事务在同一个连接上
6、close释放资源
public static void main(String[] args) throws SQLException, IOException, ClassNotFoundException {
initDataSource();// 初始化连接池
try{// 查询数据
String sql = "select * from sec_kill";
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
long id = rs.getLong("sec_kill_id");
String name = rs.getString("name");
log.info(">>>>>>id:{},name:{}", id, name);
}
}catch (Exception e){
log.info(">>>>>>>>>>>>", e);
} finally {
connection.close();
statement.close();
}
}
相关文章
- JavaWeb_(Mybatis框架)MyBatis整合Spring框架
- MyBatis整合Spring原理分析
- MyBatis拦截器机制
- SpringBoot之Mybatis操作中使用Redis做缓存
- Mybatis(基于SqlSessionTemplate的实现) + Spring 练习实战
- 使用generator自动生成mybatis model、mapper.xml、mapper等(转)
- MyBatis 缓存
- MyBatis多表查询
- 深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)
- 深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)
- mybatis group by 分组查询:将返回结果封装为map
- 【MyBatis笔记10】Mybatis中几个动态SQL标签和内置参数
- 【MyBatis笔记11】Mybatis中的一级缓存和二级缓存
- Spring+SpringMVC+Mybatis(开发必备技能)04、mybatis自动生成mapper_dao_model(包含工具与视频讲解) 纯绿色版本、配套使用视频,100%运行成功
- Spring+SpringMVC+Mybatis(开发必备技能)03、图片上传
- MyBatis快速入门——第四章、mybatis动态sql_if_choose_when
- 学习Spring Boot:(十二)Mybatis 中自定义枚举转换器
- SpringBoot学习笔记(五)——Spring Boot中使用MyBatis进阶
- mybatis 的简单使用
- MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架
- MyBatis是支持普通 SQL查询
- 【项目实战】在MyBatis-Plus的LambdaQueryWrapper中,实现MySQL的limit语句
- Intellij IDEA中Mybatis Mapper自动注入警告的6种解决方案
- Mybatis源码分析之(六)mybatis拦截器(Interceptor)的实现原理