【servlet+mybatis实现一个仓库管理系统】之mybatis手记

废话就不说了,主要是对mybatis的内存优化的笔记
《【servlet+mybatis实现一个仓库管理系统】之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>

结果展示:
《【servlet+mybatis实现一个仓库管理系统】之mybatis手记》

上述的方法是一个逻辑上的实现,也就是只能显示第一页,但是第二页查起来就没那么简单了

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的值就可以实现分页)

点赞