第5章 MyBatis缓存处理-【千锋教育】Java EE(SSM框架)企业应用实战
2023-03-21
|
31页
|
126人阅读
|
0人下载
教辅
内容正文:
第5章 MyBatis缓存处理
MyBatis的缓存机制
一级缓存
二级缓存
整合EhCache缓存
MyBatis的缓存机制
5.1
目录
Contents
初心至善 匠心育人
5.1 MyBatis的缓存机制
通常情况下,缓存将程序使用频率较高的数据存储在内存中,它具有可被快速读取和使用的特点。
MyBatis支持缓存,它在内存中开辟一块区域,该区域用于保存程序对数据库的操作信息和数据库返回的数据,如果下一次程序再执行相同的操作,那么直接从缓存中读取数据而不是从数据库读取,如此一来,大大提升数据库性能并减轻系统压力。
MyBatis支持的缓存分为一级缓存和二级缓存,如图所示。
初心至善 匠心育人
5.1 MyBatis的缓存机制
其中,一级缓存是SqlSession级别的缓存。当创建SqlSession对象操作数据库时,MyBatis在SqlSession对象中引入一个HashMap对象作为存储数据的区域,HashMap对象的key是由SQL语句、条件、statement等信息组成一个唯一值。HashMap对象的value是查询出的结果对象。不同SqlSession对象之间的HashMap对象互不影响。
二级缓存是Mapper级别的缓存,多个SqlSession去操作同一个Mapper的SQL语句,二级缓存是跨SqlSession的,多个SqlSession可以共用二级缓存。与一级缓存的HashMap对象相同,二级缓存的HashMap对象的key由SQL语句、条件、statement等信息组成,HashMap对象的value是查询出的结果对象。
在实际应用中,一级缓存是默认开启的,二级缓存需要手动开启。
初心至善 匠心育人
5.2 一级缓存
5.2.1
一级缓存的原理
5.2.2
一级缓存的应用
目录
Contents
初心至善 匠心育人
5.2 一级缓存
5.2.1 一级缓存的原理
在MyBatis中,如果一级缓存开启,当同一个SqlSession对象多次执行完全相同的SQL语句时,在第一次执行完成后,MyBatis会将查询结果写入到一级缓存,此后,如果程序没有执行插入、更新、删除操作,当第二次执行相同的查询语句时,MyBatis会直接读取一级缓存中的数据。
在实际开发中,如果多次执行同一条SQL语句,例如,从数据表student中查询出sid为1的学生信息,具体过程如图所示。
初心至善 匠心育人
5.2 一级缓存
5.2.1 一级缓存的原理
从图中可以看出,当程序第一次查询sid为1的学生信息时,程序会将结果写入MyBatis一级缓存,当程序第二次查询sid为1的学生信息时,MyBatis将直接从一级缓存中读取。当程序对数据库执行了DML操作,MyBatis会清空一级缓存中的内容以防止程序误读。
初心至善 匠心育人
5.2 一级缓存
5.2.2 一级缓存的应用
上个小节讲解了MyBatis一级缓存的原理,接下来,本节通过一个实例演示MyBatis一级缓存的应用。
1. 数据准备
创建数据库chapter05,在数据库chapter05中创建数据表student,向数据表student中插入学生信息,SQL语句参照第4章4.1.2小节中内容,此处不再具体列出。
2. 创建工程
在Eclipse中新建Web工程chapter05,将MyBatis的驱动jar包(mybatis-3.4.6.jar、mysql-connector-java-5.1.10-bin.jar和lib目录下的jar包)复制到lib目录下,完成jar包的导入。
初心至善 匠心育人
5.2 一级缓存
5.2.2 一级缓存的应用
3. 创建POJO类
在工程chapter05的src目录下创建com.qfedu.pojo包,在com.qfedu.pojo包下创建POJO类Student,具体代码参照第1章例1-1所示内容,此处不再重复列出。
4. 创建配置文件
在src目录下新建配置文件mybatis-config.xml,该文件的代码与第3章例3-5所示代码大致相同,由于要连接的数据库发生变化,此处需要将数据库名称修改为chapter05,另外<mapper></ mapper >内的内容也需要修改,要修改的代码如下所示。
初心至善 匠心育人
5.2 一级缓存
5.2.2 一级缓存的应用
5. 创建映射文件
在工程chapter05的src目录下创建com.qfedu.mapper包,在com.qfedu.mapper包下创建StudentMapper.xml文件,具体代码如例所示。
初心至善 匠心育人
5.2 一级缓存
5.2.2 一级缓存的应用
6. 创建log4j.properties文件
由于需要通过log4j日志组件查看MyBatis一级缓
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。