首页 / 缓存 / 【MyBatis】缓存:让一级缓存失效
【MyBatis】缓存:让一级缓存失效
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【MyBatis】缓存:让一级缓存失效,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2974字,纯文字阅读大概需要5分钟。
内容图文
![【MyBatis】缓存:让一级缓存失效](/upload/InfoBanner/zyjiaocheng/995/821f5972b5264bd193ec826315ae34b5.jpg)
public interface EmployeeMapper {
public Employee getEmpById(Integer id);
public Long addEmp(Employee employee);
}
public class MyBatisTest {
public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testFirstLevelCache() throws IOException{
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try{
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class); //第1个sqlSession
Employee emp01 = mapper.getEmpById(1);
System.out.println(emp01);
//【方式一】sqlSession不同。
SqlSession openSession2 = sqlSessionFactory.openSession(); //再开启个sqlSession
EmployeeMapper mapper2 = openSession2.getMapper(EmployeeMapper.class);
Employee emp02 = mapper2.getEmpById(1);
System.out.println(emp02);
System.out.println(emp01==emp02);
/*
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class); //第1个sqlSession
Employee emp01 = mapper.getEmpById(1);
System.out.println(emp01);
//【方式二】sqlSession相同,查询条件不同
Employee emp02 = mapper.getEmpById(3);
System.out.println(emp02);
System.out.println(emp01==emp02);
*/
/*
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class); //第1个sqlSession
Employee emp01 = mapper.getEmpById(1);
System.out.println(emp01);
//【方式三】sqlSession相同,两次查询间执行了增删改操作(这次增删改可能对当前数据有影响)
mapper.addEmp(new Employee(null, "testCache", "cache", "1"));
System.out.println("数据添加成功");
Employee emp02 = mapper.getEmpById(1); //但若查之前,修改了1号数据,则会再查
System.out.println(emp02);
System.out.println(emp01==emp02);
*/
/*
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class); //第1个sqlSession
Employee emp01 = mapper.getEmpById(1);
System.out.println(emp01);
//【方式四】sqlSession相同,手动清除了一级缓存(缓存清空)
openSession.clearCache();
Employee emp02 = mapper.getEmpById(1); //但若查之前,修改了1号数据,则会再查
System.out.println(emp02);
System.out.println(emp01==emp02);
*/
}finally{
openSession2.close();
openSession.close();
}
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.mybatis.dao.EmployeeMapper">
<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"
databaseId="mysql" useCache="true">
select * from tbl_employee where id = #{id}
</select>
<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"
databaseId="oracle">
select EMPLOYEE_ID id,LAST_NAME lastName,EMAIL email
from employees where EMPLOYEE_ID=#{id}
</select>
<insert id="addEmp" parameterType="com.atguigu.mybatis.bean.Employee"
useGeneratedKeys="true" keyProperty="id" databaseId="mysql"
flushCache="true">
insert into tbl_employee(last_name,email,gender)
values(#{lastName},#{email},#{gender})
</insert>
</mapper>
内容总结
以上是互联网集市为您收集整理的【MyBatis】缓存:让一级缓存失效全部内容,希望文章能够帮你解决【MyBatis】缓存:让一级缓存失效所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。