1.mybatis自带缓存功能。分为一级缓存,二级缓存。

2.一级缓存为 session 缓存,在一个 session中 ,一个查询的 select 语句只会执行一次,根据  <select></select>语句的id来判断。

  @Test
public void testFind() throws IOException{
SqlSession session = MybatisUtil.getSqlSession();
User user = (User)session.selectOne("cn.sxt.vo.UserMapper.findUser",1);
System.out.println(user);
System.out.println("===========================");
User u=(User)session.selectOne("cn.sxt.vo.UserMapper.findUser",1);
System.out.println(u);
session.close();
}

3.二级缓存,是 sessionFactory 级别的缓存,在 mybatis 中实现二级缓存的步骤

a) 首先实体类要序列化,二级缓存存储的是数据文件

b) 在映射中添加 cache 标签

<cache
eviction="FIFO"
flushInterval="60000"
size="512"
readOnly="true"/>

代码

@Test
public void testFind() throws IOException{
SqlSession session = MybatisUtil.getSqlSession();
User user = (User)session.selectOne("cn.sxt.vo.UserMapper.findUser",1);
System.out.println(user);
session.close();
System.out.println("===========================");
session = MybatisUtil.getSqlSession();
User u=(User)session.selectOne("cn.sxt.vo.UserMapper.findUser",1);
System.out.println(u);
session.close();
}

附:

UserMapper.xml

<?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="cn.sxt.vo.UserMapper">
<select id="findUser" resultType="User">
select * from t_user where id=#{id}
</select>
<cache
eviction="FIFO"
flushInterval="60000"
size="512"
readOnly="true"/>
</mapper>

java之mybatis之缓存的更多相关文章

  1. 通过源码分析MyBatis的缓存

    前方高能! 本文内容有点多,通过实际测试例子+源码分析的方式解剖MyBatis缓存的概念,对这方面有兴趣的小伙伴请继续看下去~ MyBatis缓存介绍 首先看一段wiki上关于MyBatis缓存的介绍 ...

  2. 详解Java的MyBatis框架中SQL语句映射部分的编写

    这篇文章主要介绍了Java的MyBatis框架中SQL语句映射部分的编写,文中分为resultMap和增删查改实现两个部分来讲解,需要的朋友可以参考下 1.resultMap SQL 映射XML 文件 ...

  3. MyBatis一级缓存引起的无穷递归

    MyBatis一级缓存引起的无穷递归 引言: 最近在项目中参与了一个领取优惠劵的活动,当多个用户领取同一张优惠劵的时候,使用了数据库锁控制并发,起初的设想是:如果多个人同时领一张劵,第一个到达的人领取 ...

  4. Spring+SpringMVC+MyBatis深入学习及搭建(八)——MyBatis查询缓存

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6956206.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(七)——My ...

  5. mybatis一级缓存二级缓存

    一级缓存 Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言.所以在参数和SQL完全一样的情况下,我们使用同一个SqlSess ...

  6. 深入浅出mybatis之缓存机制

    目录 前言 准备工作 MyBatis默认缓存设置 缓存实现原理分析 参数localCacheScope控制的缓存策略 参数cacheEnabled控制的缓存策略 总结 前言 提到缓存,我们都会不约而同 ...

  7. Mybatis的缓存

    1.缓存是什么 在 Mybatis 里面,所谓的缓存就是将已经查询过的记录放在内存的缓冲区或文件上,这样如果再次查询,可以通过配置的策略,命中已经查询过的记录,从而提高查询的效率. Mybatis 的 ...

  8. SpringBoot 下 mybatis 的缓存

    背景: 说起 mybatis,作为 Java 程序员应该是无人不知,它是常用的数据库访问框架.与 Spring 和 Struts 组成了 Java Web 开发的三剑客--- SSM.当然随着 Spr ...

  9. mybatis 二级缓存

    Mybatis读取缓存次序: 先从二级缓存中获取数据,如果有直接获取,如果没有进行下一步: 从一级缓存中取数据,有直接获取,如果没有进行下一步: 到数据库中进行查询,并保存到一级缓存中: 当sqlSe ...

随机推荐

  1. 文件系统EXT3,EXT4和XFS的区别

    1. EXT3 (1)最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件 (2)Ext3目前只支持32000个子目录 (3)Ext3文件系统使用32位空间记录块 ...

  2. RNN 一对一

    https://blog.csdn.net/owenfy/article/details/80022586

  3. virtualenv, conda, pip分别是什么

    自己一直使用virtualenv,但是发现很多工具或框架都是以来conda,于是就网上搜了下二者的区别,感觉这篇文章讲的比较清楚:https://blog.csdn.net/zhouchen1998/ ...

  4. HTML5的服务器EventSource(server-sent event)发送事件

    参考资料: HTML5的服务器(server-sent event)发送事件有什么应用场景? W3school HTML 5 服务器发送事件 『后台消息推送功能』,前端除了轮询.scoket.第三方服 ...

  5. Linux下安装java及配置(yum安装)

    1.查看java的所有版本:yum list java* 2.安装免费版1.8: yum install java-1.8.0-openjdk.x86_64 3.配置java环境 JAVA_HOME= ...

  6. java http get/post请求

    一.http get/post请求 /** * @Description httpPost请求 */ public static String httpPost(String url, String ...

  7. 《原创视频》牛腩学docker简记

    牛腩学docker简记 http://blog.niunan.net/blog/show/1258https://www.cnblogs.com/niunan/p/10917506.htmlhttps ...

  8. cp复制

    将Data文件复制到B目录下: cp -r /home/hp/Data /home/hp/B/  

  9. 如何上传本地jar至远程仓库供其他项目使用

    我们首先需要创建自己内部nexus私服仓库.这里假设你已经做好了. 其次我们要明白nexus上如下几个component的用处. maven-central:maven中央库,默认从https://r ...

  10. 【链接】在线压缩JS文件

    在线压缩JS文件: http://yui.2clics.net/ https://refresh-sf.com/