总:Mybatis分页

RowBounds分页

缺点 这种分页是基于内存的分页,效率很低,不推荐使用

如下代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.jianglei.mapper2.UserMapper2">
    <select id="listUser" resultType="User" parameterType="User">
        SELECT  * FROM user
        <where>
            <if test="name != null and name != ''">
                name like concat('%',#{name}, '%')
            </if>
        </where>
    </select>
</mapper>
User user = new User();
user.setName("张");

List<User> objects = sqlSession.selectList("com.jianglei.mapper2.UserMapper2.listUser", user, new RowBounds(4, 2));

mybatis查询的sql 为

SELECT * FROM user WHERE name like concat('%',?, '%')

查询出全部结果,然后基于内存分页

自定义sql实现分页

缺点:要自己计算偏移量的值, 还要写一个相匹配的计算count的sql,很烦。

@Select("select * from user limit #{pageNum}, #{pageSize}")
List<User> listUser2(@Param("pageNum") Integer pageNum, @Param("pageSize") Integer pageSize);

@Select("select count(*) from user limit #{pageNum}, #{pageSize}")
int listUser2(@Param("pageNum") Integer pageNum, @Param("pageSize") Integer pageSize);

results matching ""

    No results matching ""