本文核心内容:①:MyBatis实现Sql复用、通用查询、高效修改、批量删除、模糊查询②:MyBatis的缓存机制。
一:动态SQL
①:共性SQL
②:通用查询
③:高效修改
④:批量删除
批量删除有两种方式:
1:这一种效率低下,但是实现简单。
for(String id:list){ deleteById(id); }
2:
⑤:模糊查询
想解决模糊查询
首先分清MyBatis发送Sql,#{}与${}绑定数据的差别。
#{}采用站位符的方式绑定数据
${}采用字符拼接的方式绑定数据(这种不能防止SQL注入)
二:MyBatis缓存
①:概念:用来存储用户查询的数据
②:作用:加快(被缓存过的数据)查询效率.
③:核心思路:
1. 数据尽可能从内存中获取,较少硬盘检索需要花费的时间
2. 减少服务器tomcat通过网络URL和数据库交互次数,提高查询效率,降低数据库访问压力。
④:缓存机制:
每次查询数据,会先尝试从缓存中获得数据,
如果得到,则查询结束(不会查询数据库, 不会发送sql)
如果没有得到数据,发送sql从数据库中获得数据,同时将结果数据存入缓存中.
⑤:编码
MyBatis缓存*开发步骤
1.开启MyBatis全局缓存设置
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
2.在要使用缓存的mapper文件中,添加
<cache></cache>
*当前mapper中的查询将会使用缓存;
3.将实体实现Serializable接口
*对象在缓存中将会被序列化存储.
避免脏数据:缓存中的数据与数据库中的数据不一致时,会自动清空缓存,重新查询数据库
总结:
I. 查询操作之后,必须关闭SqlSession,确保查询结果存储到的缓存空间中。
II. 增删改操作之后,必须提交事务,才清空缓存。