总: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);