经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Oracle » 查看文章
Oracle使用MyBatis中RowBounds实现分页查询
来源:cnblogs  作者:丘壑山河  时间:2019/7/19 8:53:08  对本文有异议

Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便。

使用MyBatis中的RowBounds进行分页查询时,不需要在 sql 语句中写 offset,limit,mybatis 会自动拼接 分页sql ,添加 offset,limit,实现自动分页。

需要前台传递参数currentPage和pageSize两个参数,分别是当前页和每页数量,controller层把参数传递给service层即可,下面是service实现的代码:

  1. package com.xyfer.service.impl;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Map;
  5. import org.apache.ibatis.session.RowBounds;
  6. import com.xyfer.dao.UserDao;
  7. import com.xyfer.service.UserService;
  8. public class UserServiceImpl implements UserService {
  9. private UserDao userDao;
  10. @Override
  11. public Map<String, Object> queryUserList(String currentPage, String pageSize) {
  12. //查询数据总条数
  13. int total = userDao.queryCountUser();
  14. //返回结果集
  15. Map<String,Object> resultMap = new HashMap<String,Object>();
  16. resultMap.put("total", total);
  17. //总页数
  18. int totalpage = (total + Integer.parseInt(pageSize) - 1) / Integer.parseInt(pageSize);
  19. resultMap.put("totalpage", totalpage);
  20. //数据的起始行
  21. int offset = (Integer.parseInt(currentPage)-1)*Integer.parseInt(pageSize);
  22. RowBounds rowbounds = new RowBounds(offset, Integer.parseInt(pageSize));
  23. //用户数据集合
  24. List<Map<String, Object>> userList = userDao.queryUserList(rowbounds);
  25. resultMap.put("userList", userList);
  26. return resultMap;
  27. }
  28. }

dao层接口:

  1. package com.xyfer.dao;
  2. import java.util.List;
  3. import java.util.Map;
  4. import org.apache.ibatis.session.RowBounds;
  5. public interface UserDao {
  6. public int queryCountUser(); //查询用户总数
  7. public List<Map<String, Object>> queryUserList(RowBounds rowbounds); //查询用户列表
  8. }

对应的mapper.xml文件:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.xyfer.mapper.UserMapper">
  6. <!-- 查询用户总数 -->
  7. <select id="queryCountUser" resultType="java.lang.Integer">
  8. select count(1) from user
  9. </select>
  10. <!-- 查询用户列表 -->
  11. <select id="queryUserList" resultType="java.util.Map">
  12. select * from user
  13. </select>
  14. </mapper>

通过postman调用接口,传入对应的参数,即可实现分页查询数据。

 

原文链接:http://www.cnblogs.com/xyfer1018/p/11208672.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号