废话就不说了,主要是对mybatis的内存优化的笔记
截图中显示已经很清楚了
<cache size="1024" flushInterval="60000" eviction="LRU" readOnly="false "/>
1.size:表示cache中能容纳的最大元素数。默认是1024
2.flushInterval:定义缓存刷新周期,以毫秒计
3.eviction:定义缓存的移除机制;默认是LRU(least recently used, 最近最少使用)另外还有FIFO(first in first out 先进先出)
4.readOnly:默认是false,假如是true,缓存只能是读
mybatis这里的内存优化在处理一些高并发的程序中作用比较大,而小项目中并不能体现出其价值(不过我也没用到,毕竟做的还是单用户)。
这里在介绍一下mybatis的分页:
1.逻辑分页(实际开发中并没什么卵用,那为什么介绍呢?我也是刚学到)
Mapper中的接口:
//逻辑分页
public List<User> findUsers(RowBounds rowBounds);
接口的实现;
<select id="findUsers" resultMap="userResult">
SELECT * FROM user_tab
</select>
结果展示:
上述的方法是一个逻辑上的实现,也就是只能显示第一页,但是第二页查起来就没那么简单了
2.物理分页
Mapper中的接口:
//物理分页
public List<User> findUser(Map<String, Object> map);
接口实现:
<select id="findUser" parameterType="Map" resultMap="userResult">
SELECT * FROM user_tab
<if test="start != null and size != null">
limit #{start}, #{size}
</if>
</select>
/**
* 物理分页查询
*/
@Test
public void testFindUser() {
logger.info("查询学生(物理分页)");
Map<String, Object> map = new HashMap<String, Object>();
map.put("start", 0);
map.put("size", 3);
List<User> list = userMapper.findUser(map);
for(User user:list){
System.out.println(user);
}
}
两者的不同之处主要是体现在这里,传进去的参数是不同的,逻辑分页里面是mybatis的参数,分页起始点和每页的数据量都已经固定(个人见解,望指正)。而逻辑分页是根据传入参数可以将数据进行分页(start是起始位置,size则是截断数量,修改start的值就可以实现分页)
点击查看更多内容
5人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦