Mybatis学习打卡
Mybatis学习笔记—第一天
Mybatis笔记 第一天
一.引言
1. 现有Jdbc的缺陷
- 代码冗余(相似度90%) , 只有sql命令不同
- 参数的绑定 和 实体类对象的封装(数据封装) 需要手工完成
- jdbc技术没有提供”连接池”功能
- 没有提供”缓存”机制
2. Mybatis框架
- 是一种基于java的框架 , 对jdbc代码的封装 , 主要优化数据的持久化操作 , 提出
了一种新的方式完成dao接口的实现
2)实现机制
3. 搭建环境
1) 引入jar包
Mybatis-3.2.2.jar ojdbc5.jar log4j.jar(不是必须的,做日志输出的)
2) 引入配置文件 — src
Mybatis-config.xml(文件名随意) log4j.properties
3) 初始化配置 – 写mybatis-config.xml
二.第一个Mybatis程序 — 查询数据
1. 准备
- 表 2) 实体类 3) dao接口
2. 写映射文件 TeacherDaoImpl.xml
3. 注册映射文件 – 将自定义的映射文件注册到配置文件里
4. 测试代码 — service层代码
1) mybatis里的核心类
① SqlSessionFactoryBuilder : 是读取mybatis框架配置文件mybatis-config的工具类
(获取框架的运行环境) , 并将读到的内容封装成对象存储下来
② SqlSessionFactory : 当前类型的对象里封装了mybatis配置文件的信息
③ SqlSession : 将mapper文件翻译成接口的实现类,并创建对象返回 ; session里封装
了jdbc中的Connection对象 ( 一一对应 )
2) 代码
① 创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
② 获取读文件的io流对象
Reader reader = Resources.getResourceAsReader(“文件的路径--从src下开始写”) ;
③ 获取SqlSessionFactory对象
SqlSessionFactory factory = builder.build( reader ); //开始读文件并封装
④ 获取SqlSession
SqlSession session = factory.openSession();
⑤ 获取接口的实现类对象
XxxDao dao = session.getMapper( XxxDao.class );
三.其他DML功能 ( insert update delete )
注意: 功能涉及到增删改任一操作 , 都必须手动显示commit
1. 删除功能 delete
2. 更新功能update
3. 插入功能 insert
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200106221024326.png)
四.Dao层的其他功能 — 查所有
1. 方法声明
public List<Teacher> queryAll() ;
2. 映射文件
<select id=”queryAll” resultType=”集合里一个元素的类型 entity.Teacher”>
Select * from teacher
</select>
五.封装MybatisUtil工具类
- Mybatis启动时需要读取配置文件(只读取一次即可) , 需要将代码定义在静态代码块
- SqlSessionFactory对象里封装了配置文件信息 , 是重量级组件(内存占用多, 功能强大,
运行效率低 , 线程安全) ,一般应用中只会创建一个这样的对象. - SqlSession与Connection一一对应的 , 线程不安全(不能在多个线程间共享,需要为每一
个线程单独分配一个session — ThreadLocal )
六.映射文件的特殊写法 — 查询
1. 多参查询 – 省略parameterType
注意:方法的形参名不能长时间保留,在编译过程中丢失,不能在映射文件中使用
解决:
1) 通过参数的下标来指定获取哪一个参数的值
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200106222410501.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200106222410779.png)
2) 通过注解为参数定义可以长久保留的名字( 至少出现在字节码文件里 )