让我们先看看原先的分页查询的代码:
一,先要在UserInfoMapper接口中写一个分页查询的方法
/**
* 分页查询用户
* @param start
* @param rows
* @return
*/
List<User> queryUserByPage(Map<String, Integer> map);
二,在UserInfoMapper映射文件中配置sql语句
<select id="queryUserByPage" parameterType="map" resultType="user">
SELECT
`id`,
`user_name`,
`password`,
`name`,
`age`,
`sex`,
`birthday`,
`created`,
`updated`
FROM `user`
LIMIT #{start}, #{rows};
</select>
三,在UserInfoMapperTest测试类中扩展分页查询方法:
@Tes
public void testQueryUserByPage() {
SqlSession sqlSession = sessionFactory.openSession(true);
UserInfoMapper mapper = sqlSession.getMapper(UserInfoMapper.class);
Map<String, Integer> map = new HashMap<>();
map.put("start", 4);
map.put("rows", 2);
List<User> list = mapper.queryUserByPage(map);
for (User user : list) {
System.out.println(user);
}
sqlSession.close();
}
可以发现整个流程还是比较复杂的,代码也挺多.下面是配置了分页插件后,代码得到精减:
步骤:一,在sqlMapConfig.xml中配置分页插件
<!-- com.github.pagehelper为PageHelper类所在包名,分页插件应该配置在通用Mapper上 -->
<plugin interceptor="com.github.pagehelper.PageHelper">
<property name="dialect" value="mysql" />
<!-- 该参数默认为false -->
<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
<property name="rowBoundsWithCount" value="true" />
</plugin>
步骤二,在UserInfoMapperTest测试类中扩展分页方法
@Test
public void testQueryUserByPageHelp() {
SqlSession sqlSession = sessionFactory.openSession(true);
UserInfoMapper mapper = sqlSession.getMapper(UserInfoMapper.class);
//启动分页(从1开始)
PageHelper.startPage(2, 2);
List<User> list = mapper.select(null);
for (User user : list) {
System.out.println(user);
}
sqlSession.close();
}
注:如要得到总记录数:在遍历之前加上下面这行代码即可
PageInfo<User> info = new PageInfo<>(list);
System.out.println("总记录数为:" + info.getTotal());