文章目录
MyBatis框架执行过程
- 配置mybatis的全局配置文件:
SqlMapConfig.xml
:名称不固定,但是在实际开发中没有必要修改全局配置文件的文件名:位置与名称都固定不变 - 通过全局配置文件,加载mybatis运行环境,创建
SqlSessionFactory
会话工厂:SqlSessionFactory
是实际使用时按单例方式 - 通过
SqlSessionFactory
创建SqlSession
:SqlSession
是一个面向用户接口(提供操作数据的方法与属性):实现对象是线程不安全的:建议SqlSession
应用场合在方法体内
- 调用
SqlSession
的方法操作数据:如果需要提交事务,需要执行SqlSession
的commit()
方法 - 释放资源,关闭
SqlSession
MyBatis开发dao的方法
原始dao的开发方法
- 需要程序猿编写
dao接口
与接口实现类 - 需要在dao接口实现类中注入一个
SqlSessionFactory
会话工厂
mapper代理的开发方法
- 只需要程序猿编写
mapper接口
(就是dao接口) - 程序猿在编写mapper.xml(映射配置文件)和mapper.java(mapper接口)需要遵循一个开发规范:
(1) mapper.xml中的namespace属性值就是mapper.java的全限定类名
(2) mapper.xml中的statement的id和mapper.java中方法名一致
(3) mapper.xml中的statement的parameterType指定输入参数类型和mapper.java的方法输入的参数类型一致
(4) mapper.xml中statement的resultType指定输出结果的类型和mapper.java的方法返回值一致 补充
: 包装pojo类型:将各种各样的简单的pojo类型包在一起
输入映射 & 输出映射
- 输入映射:parameterType指定输入参数类型可以是简单类型、pojo、hashmap、…
- 对于综合查询:建议parameterType使用
包装的pojo
,有利用系统扩展 - 输出映射:
(1) resultType:查询得到的结果集的列名与resultType指定的pojo的属性名一致才能映射成功
(2) resultMap:①完成一些高级映射;②如果查询得到的结果集的列名与pojo的属性名不一致,则需要resultMap设置列名与属性名之间的对应关系(映射关系),可以完成映射 - 高级映射:
(1) 将关联查询的列映射到一个pojo
属性中:一对一
(2)将关联查询的列映射到一个List<pojo>
中:一对多
动态SQL
- if判断(掌握)
- where标签可以去掉第一个AND
- foreach可以操作集合与数组
- SQL片段
高级映射
- 实现一对一查询,一对多查询,多对多查询
- 延迟加载
- 查询缓存
(1) 一级缓存
(2) 二级缓存:了解mybatis二级缓存使用场景 - mybatis与spring整合(掌握)
多个订单可以有一个用户创建:多对一