mybatis缓存单元测试

Dao接口

@Mapper
public interface Ky_s_ship_miss_dtlDao {
	
	List<Map<String,Object>> list(Map<String,Object> map);
	
}

mapper.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="com.bootdo.witdbct.miss.dao.Ky_s_ship_miss_dtlDao">
    <!--该xml文件下所有select都使用缓存-->
	<cache/>
	<!--结果集如果返回实体,model 类要实现 java Serializable 接口-->
	<select id="list" resultType="Map">
	    ....
	</select>
    <!--个别不用缓存的另外备注useCache-->
	<select id="list2" resultType="Map" useCache="false">
	    ....
	</select>
</mapper>
 <cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>

flushInterval(刷新间隔) 可以被设置为任意的正整数,而且它们代表一个合理的毫秒 形式的时间段。默认情况是不设置,也就是没有刷新间隔,缓存仅仅调用语句时刷新。
size(引用数目) 可以被设置为任意正整数,要记住你缓存的对象数目和你运行环境的可用内存资源数目。默认值是 1024。
readOnly(只读) 属性可以被设置为true或false。只读的缓存会给所有调用者返回缓 存对象的相同实例。因此这些对象不能被修改。这提供了很重要的性能优势。可读写的缓存 会返回缓存对象的拷贝(通过序列化) 。这会慢一些,但是安全,因此默认是 false。
eviction(收回策略)有:
LRU – 最近最少使用的:移除最长时间不被使用的对象。(默认)
FIFO – 先进先出:按对象进入缓存的顺序来移除它们。
SOFT – 软引用:移除基于垃圾回收器状态和软引用规则的对象。
WEAK – 弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。

单元测试类

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestDemo {
    @Autowired
    private Ky_s_ship_miss_dtlDao dataDao;
    @Autowired
    private SqlSessionFactory sqlSessionFactory;

    /**
     * 测试mybatis一级缓存,一个session共享一份缓存
     */
    @Test
    public void TestDaoMethod(){
   		 //查询条件
        Map<String,Object> param = new HashMap<>();
        param.put("offset",0);
        param.put("limit",20);
        param.put("areaId",1);
        param.put("start_time","2018-07-01 10:30:00");
        param.put("end_time","2018-07-31 10:29:59");
        Long start = System.currentTimeMillis();
        List<Map<String,Object>>  aa = dataDao.list(param);
        Long end = System.currentTimeMillis();
        System.out.println("首次查询数:"+(end-start));
        start = System.currentTimeMillis();
        List<Map<String,Object>>  bb = dataDao.list(param);
        end = System.currentTimeMillis();
        System.out.println("再次查询数:"+(end-start));
    }

    /**
     * 测试mybatis二级缓存,多个session共享一份缓存
     */
    @Test
    public void TestDaoMethod2(){
        //查询条件
        Map<String,Object> param = new HashMap<>();
        param.put("offset",0);
        param.put("limit",50);
        param.put("areaId",1);
        param.put("start_time","2018-07-01 10:30:00");
        param.put("end_time","2018-07-31 10:29:59");
        SqlSession sqlSession1=null;
        SqlSession sqlSession2=null;
        sqlSession1=sqlSessionFactory.openSession();
        sqlSession2=sqlSessionFactory.openSession();
        //生成代理类
        Ky_s_ship_miss_dtlDao orderMapper=sqlSession1.getMapper(Ky_s_ship_miss_dtlDao.class);
        Ky_s_ship_miss_dtlDao orderMapper2=sqlSession2.getMapper(Ky_s_ship_miss_dtlDao.class);

        Long start = System.currentTimeMillis();
        List<Map<String,Object>>  aa = orderMapper.list(param);
        Long end = System.currentTimeMillis();
        sqlSession1.close();
        System.out.println("首次查询:"+(end-start));
        start = System.currentTimeMillis();
        List<Map<String,Object>>  bb = orderMapper2.list(param);
        sqlSession2.close();
        end = System.currentTimeMillis();
        System.out.println("再次查询:"+(end-start));
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

占星安啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值