一、Mybatis 延迟加载对策
1.1 什么是延迟加载?
延迟加载:便是在要使用数据信息时才开展加载,不用使用数据信息时也不加载数据信息。延迟加载也称懒加载。
益处:先从单表查询,必须时再从关系表去关联查询,进一步提高数据库查询特性,由于查询单表要比关联查询好几张表速率要快。
弊端: 由于只要当必须使用数据信息时,才会开展数据库查询查询,那样在大批数据信息查询时,由于查询工作中也需要耗费時间,因此很有可能导致用户等待的时间拉长,导致用户感受降低。
1.2 实现需求:
要求:查询帐户(Account)信息而且关联查询用户(User)信息。假如先查询帐户(Account)信息就可以符合要求,在我们必须查询用户(User)信息时再查询用户(User)信息。把对用户(User)信息的按需到查询便是延迟加载。
1.3 应用 assocation 完成延迟加载:
1.3.1 帐户的持久层 DAO 插口:
1.3.2 帐户的持久层投射文档:
1.3.3 用户的持久层插口和投射文档:
1.3.4 打开 Mybatis 的延迟加载对策:
大家必须在 Mybatis 的环境变量 SqlMapConfig.xml 文档中加上延迟加载的配备:
1.3.5 撰写测试标准
1.4 应用 Collection 完成延迟加载:
1.4.1 在 User 实体类中添加 List<Account>特性
1.4.2 撰写用户和帐户持久层插口的方式
1.4.3 撰写用户持久层投射配备:
1.4.4 撰写帐户持久层投射配备:
1.4.5 撰写测试标准
二、Mybatis 缓存文件
2.1 Mybatis 一级缓存:一级缓存文件是 SqlSession 范畴的缓存文件,当启用 SqlSession 的改动,加上,删掉,commit(),close()等方式时,便会清除一级缓存文件。
2.2 Mybatis 二级缓存:二级缓存是 mapper 投射等级的缓存文件,好几个SqlSession去实际操作同一个 Mapper 投射的 sql 句子,好几个 SqlSession 可以同用二级缓存,二级缓存是跨 SqlSession 的。
2.2.1 二级缓存的打开与关掉:
2.2.1.1 第一步:在 SqlMapConfig.xml 文档打开二级缓存
2.2.1.2 第二步:配备相应的 Mapper 投射文档
2.2.1.3 第三步:配备 statement 上边的 useCache 特性
2.2.2 二级缓存常见问题:在我们在应用二级缓存时,所缓存文件的类一定要完成 java.io.Serializable 插口,那样就可以应用实例化方法来储存目标。
第3章 Mybatis 注释开发设计
3.1 mybatis 的常见注释表明:
@Insert:完成新增加
@Update:完成升级
@Delete:完成删掉
@Select:完成查询
@Result:实现結果集封装形式
@Results:可以与@Result 一起应用,封装形式好几个結果集
@ResultMap:完成引入
@Results 界定的封装形式
@One:完成一对一結果集封装形式
@Many:完成一对多結果集封装形式
@SelectProvider: 完成动态性 SQL 投射
@CacheNamespace:完成注释二级缓存的应用
3.2 使用 Mybatis 注释完成基本上 CRUD:
3.2.1 撰写实体类
3.2.2 应用注释方法开发设计持久层插口:
3.2.2.1 查询全部用户:
3.2.2.2 依据id查询一个用户:
3.2.2.3 储存和升级实际操作:
3.2.2.4 删掉实际操作和应用聚合函数
3.2.2.4 模糊不清查询实际操作:
3.2.3 撰写 SqlMapConfig 环境变量
3.2.4 撰写测试标准
3.3 应用注释完成繁杂关联投射开发设计:
3.3.1 繁杂关联投射的注释表明:
3.3.2 应用注释完成一对一繁杂关联投射及延迟时间载入:
要求: 载入账户信息时而且载入该帐户的客户信息,依据状况可完成延迟时间载入。(注释方法完成)
3.3.2.1 加上 User 实体类及 Account 实体类:
3.3.2.2 添加帐户的持久层插口并应用注释配备
3.3.2.3 加上客户的持久层插口并应用注释配备:
3.3.2.4 检测一对一关系及延迟时间载入
3.3.3 应用注释完成一对多繁杂关联投射:
要求: 查看客户信息时,也需要查看他的帐户目录。应用注释方法完成。
剖析: 一个客户具备好几个账户信息,因此产生了客户(User)与帐户(Account)中间的一对多关联。
3.3.3.1 User 实体类添加 List<Account>:
3.3.3.2 撰写客户的持久层插口并应用注释配备
@Many:
select 特性:意味着即将实行的 sql 句子
fetchType 特性:意味着载入方法,一般要是要延迟时间载入都设定为 LAZY 的值
3.3.3.3 撰写帐户的持久层插口并应用注释配备
3.3.3.4 加上测试标准
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。