好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Oracle使用MyBatis中RowBounds实现分页查询功能

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

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

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

package com.xyfer.service.impl;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.apache.ibatis.session.RowBounds;

import com.xyfer.dao.UserDao;

import com.xyfer.service.UserService;

public class UserServiceImpl implements UserService {

   private UserDao userDao;

   @Override

   public Map<String, Object> queryUserList(String currentPage, String pageSize) {

     //查询数据总条数

     int total = userDao.queryCountUser();

     //返回结果集

     Map<String,Object> resultMap = new HashMap<String,Object>();

     resultMap.put( "total" , total);

     //总页数

     int totalpage = (total + Integer .parseInt(pageSize) - 1) / Integer .parseInt(pageSize);

     resultMap.put( "totalpage" , totalpage);

     //数据的起始行

     int offset = ( Integer .parseInt(currentPage)-1)* Integer .parseInt(pageSize);

     RowBounds rowbounds = new RowBounds(offset, Integer .parseInt(pageSize));

     //用户数据集合

     List<Map<String, Object>> userList = userDao.queryUserList(rowbounds);

     resultMap.put( "userList" , userList);

     return resultMap;

   }

}

dao层接口:

?

1

2

3

4

5

6

7

8

package com.xyfer.dao;

import java.util.List;

import java.util.Map;

import org.apache.ibatis.session.RowBounds;

public interface UserDao {

   public int queryCountUser();    //查询用户总数

   public List<Map<String, Object>> queryUserList(RowBounds rowbounds);  //查询用户列表

}

对应的mapper.xml文件:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?xml version= "1.0" encoding= "UTF-8" ?>

<!DOCTYPE mapper

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace= "com.xyfer.mapper.UserMapper" >

   <! -- 查询用户总数 -->

   < select id= "queryCountUser" resultType= "java.lang.Integer" >

     select count (1) from user

   </ select >

   <! -- 查询用户列表 -->

   < select id= "queryUserList" resultType= "java.util.Map" >

     select * from user

   </ select >

</mapper>

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

总结

以上所述是小编给大家介绍的Oracle使用MyBatis中RowBounds实现分页查询功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

原文链接:https://www.cnblogs.com/xyfer1018/archive/2019/07/18/11208672.html

查看更多关于Oracle使用MyBatis中RowBounds实现分页查询功能的详细内容...

  阅读:20次