MyBatis二级缓存是如何实现跨会话共享的?

更新于
2026-10-12 08:21:50
1阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计637个文字,预计阅读时间需要3分钟。

MyBatis二级缓存是如何实现跨会话共享的?

%E2%80%9C%E6%98%AF%E4%BB%80%E4%B9%88%E5%9B%BD%E5%BA%A6%E6%88%90%E9%95%BF%E7%9A%84%E5%8F%82%E6%95%B0%E5%8F%82%E8%80%83%E6%96%B9%E6%B3%95%E3%80%82%E2%80%9D

MyBatis二级缓存是如何实现跨会话共享的?

UserInfoMapper

u.*,r.id as "rinfo.id",r.name as "rinfo.name" select seq2.nextval from dual insert into userinfo values#{id},#{name},#{pwd},#{roleid} update userinfo name=#{name}, pwd=#{pwd}, roleid=#{roleid} where id=0 test

package pidan.test; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import pidan.dao.UserInfoDao; public class Test { static SqlSessionFactory sqlSessionFactory; public static void main(String[] args) throws Exception { SqlSession session1=getSqlSession(); //二级缓存 UserInfoDao dao1=session1.getMapper(UserInfoDao.class); System.out.println(dao1.getUserById(1005)); Thread.sleep(15000); session1.close(); SqlSession session2=getSqlSession(); UserInfoDao dao2=session2.getMapper(UserInfoDao.class); System.out.println(dao2.getUserById(1005)); } static{ try { String resource="mybatis.xml"; InputStream inputStream=Resources.getResourceAsStream(resource); sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //SqlSession不能使用单例,sqlSessionFactory可以使用单例 public static SqlSession getSqlSession() { return sqlSessionFactory.openSession(); } }

本文共计637个文字,预计阅读时间需要3分钟。

MyBatis二级缓存是如何实现跨会话共享的?

%E2%80%9C%E6%98%AF%E4%BB%80%E4%B9%88%E5%9B%BD%E5%BA%A6%E6%88%90%E9%95%BF%E7%9A%84%E5%8F%82%E6%95%B0%E5%8F%82%E8%80%83%E6%96%B9%E6%B3%95%E3%80%82%E2%80%9D

MyBatis二级缓存是如何实现跨会话共享的?

UserInfoMapper

u.*,r.id as "rinfo.id",r.name as "rinfo.name" select seq2.nextval from dual insert into userinfo values#{id},#{name},#{pwd},#{roleid} update userinfo name=#{name}, pwd=#{pwd}, roleid=#{roleid} where id=0 test

package pidan.test; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import pidan.dao.UserInfoDao; public class Test { static SqlSessionFactory sqlSessionFactory; public static void main(String[] args) throws Exception { SqlSession session1=getSqlSession(); //二级缓存 UserInfoDao dao1=session1.getMapper(UserInfoDao.class); System.out.println(dao1.getUserById(1005)); Thread.sleep(15000); session1.close(); SqlSession session2=getSqlSession(); UserInfoDao dao2=session2.getMapper(UserInfoDao.class); System.out.println(dao2.getUserById(1005)); } static{ try { String resource="mybatis.xml"; InputStream inputStream=Resources.getResourceAsStream(resource); sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //SqlSession不能使用单例,sqlSessionFactory可以使用单例 public static SqlSession getSqlSession() { return sqlSessionFactory.openSession(); } }