Mybatis知识点整理
Posted 你好啊cbw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis知识点整理相关的知识,希望对你有一定的参考价值。
目录
2.10.0.在测试类中使用测试注解@Before @After减少重复代码
5.使用ThreadLocal优化sqlSession工具类
8.5 映射器 Mappers(将映射文件映射到mybatis配置文件)
9.1.4 对一映射方式2:直接引用关联对象的Mapper映射
9.1.5 对一映射方式3:直接引用关联对象的单独查询的方法
9.2.2 方式2:不使用连接查询+引用关联对象的单独查询的方法
12.2 一级缓存:SqlSession级别的缓存,自动开启
1、Mybatis概述
1.1 JDBC编程
1.2.说说你对Mybatis的了解
1.Mybatis 基于java的持久层框架,它的内部封装了JDBC,让开发人员只需要关注SQL语句本身,不需要花费精力在驱动的加载、连接的创建、Statement的创建等复杂的过程。
1.3 Mybatis解决的问题
1、数据库连接的创建、释放连接的频繁操作造成资源的浪费从而影响系统的性能。
2、SQL语句编写在代码中,硬编码造成代码不容易维护,实际应用中SQL语句变化的可能性比较大,一旦变动就需要改变java类。
3、使用preparedStatement的时候传递参数使用占位符,也存在硬编码,因为SQL语句变化,必须修改源码。
4、对结果集的解析中也存在硬编码。
2、Mybatis入门案例
2.1 创建数据库和表
CREATE TABLE `team` (
`teamId` int NOT NULL AUTO_INCREMENT COMMENT '球队ID',
`teamName` varchar(50) DEFAULT NULL COMMENT '球队名称',
`location` varchar(50) DEFAULT NULL COMMENT '球队位置',
`createTime` date DEFAULT NULL COMMENT '球队建立时间',
PRIMARY KEY (`teamId`)
) ENGINE=InnoDB AUTO_INCREMENT=1003 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
2.2 创建maven项目,添加Mybatis的jar依赖
创建个java的maven项目
2.3 编写Mybatis的配置文件
一般情况下:配置文件的名称可以自定义,使用mybatis.xml。配置文件放置在java/resources中。
头文件去官网中复制粘贴。提供一个中文的网站。Mybatis网址
配置文件中配置mybatis的环境(数据源、事务类型)
2.4 编写实体类
实体类中的属性必须与表中的列名保持一致,默认构造+set+get(不能少)
2.5 编写ORM映射文件
我们是针对实体类Team.java和表Team进行ORM映射.
2.5.1 XML映射文件必须与实体类在同一个包下面
2.5.2 XML映射文件名称必须是实体类名称一致
头文件在网站复制即可。Mybatis网址
注意namespace、id、resultType分别表示什么。
2.6 将映射文件注册到mybatis的配置文件中
2.7 配置映射文件的扫描位置
2.8 使用Mybatis框架的核心接口测试
2.9. 配置日志文件
2.9.1.添加jar依赖
2.9.2.添加日志配置文件
# Global logging configuration info warning error
log4j.rootLogger=DEBUG,stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
2.9.3.在mybatis配置文件中添加日志的配置
2.10.入门案例的增删改查
2.10.0.注意:手动提交事务
增删改操作,必须手动提交事务,否则不生效
因为上面在mybatis配置中,指定了JDBC方式(Connection)管理事务,默认自动提交是false,
解决1.每执行一次增删改sql,我们手动提交sqlSession.commit()
解决2.在获取sqlSession会话时,开启自动事务,参数true,即factory.openSession(true)
这只是在dao层操作事务,不推荐,将来事务都是在service层通过声明式事务管理
实体类
2.10.0.在测试类中使用测试注解@Before @After减少重复代码
2.10.1 根据ID查询单个对象
parameterType:参数类型,sql中占位符类型,该属性基本类型时可省略,实体类型则不可省略
resultType:返回类型,执行这条sql后返回什么类型的结果,基本类型可省略不写,若集合则其元素类型-->
报错原因:实体类没有加默认构造方法
Team.xml的映射文件中添加:
测试类中添加如下内容:
2.10.2 增删改
2.10.3.查询所有
映射文件添加
测试类添加
3、Mybatis对象分析
3.1 Resources
3.2 SqlSessionFactoryBuilder
SqlSessionFactoryBuilder 充当的就是建造者角色 ,sqlSession就是我们最后得到的产品。
3.3 SqlSessionFactory
3.4 SqlSession
selectOne 和 selectList 的不同仅仅是 selectOne 必须返回一个对象或 null 值。如果返回值多于一个,那么就会抛出异常。