mybitsCSDN详解

1,https://blog.csdn.net/qq_22583741/article/details/79450343?utm_source=app&app_version=4.16.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

2,https://blog.csdn.net/DangerousMc/article/details/104710781?utm_source=app&app_version=4.16.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

image.png

image.png

mybits注解

①延迟加载

image.png
image.png
总开关要开启才能使用

②缓存管理

基本概念
image.png
image.png
一级缓存概念(默认开启,无法关闭)
image.png

增删改操作会刷新一级缓存(清空)(防止读藏数据)
底层也是map集合
//key: hashCode + statementId + SQL
//value: 查询结果
二级缓存(默认关闭,必须开启)包括两类,

一.内置二级缓存

1,开启方式分为两步使用方法
Ⅰ,在映射文件中添加标签
Ⅱ,操作的实体类要实现Serializable接口
增删改操作问题
Ⅰ,增删改操作会刷新二级缓存(实质上是将二级缓存中的所有Entry对 象的value置为null,并未删除整个Entry对象,而key仍然保留)
Ⅱ,到底何时执行DB的Select查询?
// 有两种情况可以到DB中执行真正的查询
//①Map中根本就不存在要查询的Entry,既没有Entry
//②Map中存在要查询的key,但其value为null
Ⅲ 增删改操作默认可以影响二级缓存,但也可以让其不影响,只需在增删改的Statement中添加flushCache=”false”属性即可

2,二级缓存使用原则
①,不要出现多个namespace操作一张表的情况,
②,对关联关系不要出现增删改操作,
③,当查询擦偶哦多余增删改操作时可以使用二级缓存,

3,二级缓存的关闭分为俩类
1)全局性关闭:当前应用中所有的语句均不能使用二级缓存
操作是在配置文件中的settings标签中cacheEnable值设为false
2)局部性关闭:可以指定某一个查询不适用二级缓存
操作是在Select语句中添加useCache属性即可关闭,不影响其它语句

二,外置第三方缓存产品

  1. **1EHCache二级查询缓存(在mybatis官网下载后导入JAR包)**<br />** ** 其开启方式分为两步使用方法<br /> Ⅰ,导入两个jia包:ehcache核心jia包和mybitsehcache整合的jar包<br /> Ⅱ,在映射文件中添加<cach type="**名字**"/>标签<br /> <br /> **2,二级缓存的关闭分为俩类**<br /> 1)全局性关闭:当前应用中所有的语句均不能使用二级缓存<br /> 操作是在配置文件中的settings标签中cacheEnable值设为false<br /> 2)局部性关闭:可以指定某一个查询不适用二级缓存<br /> 操作是在Select语句中添加useCache属性即可关闭,不影响其它语句<br />

注解image.png

动态查询通过注解实现
image.png
id=#{id} 相当于 动态SQL中的 1=#{1}

动态SQL(实现了更改了某些项其它不动)相当于在拼写SQL语句
image.png
利用实例代码块解决不知道SQL类名字的问题
image.png