您的位置:首页 > 其它

分页查询插件在框架中的应用

2017-11-29 22:05 169 查看
让我们先看看原先的分页查询的代码:

一,先要在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());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  分页查询
相关文章推荐