Oracle使用MyBatis中RowBounds實現分頁查詢


Oracle中分頁查詢因為存在偽列rownum,sql語句寫起來較為復雜,現在介紹一種通過使用MyBatis中的RowBounds進行分頁查詢,非常方便。

使用MyBatis中的RowBounds進行分頁查詢時,不需要在 sql 語句中寫 offset,limit,mybatis 會自動拼接 分頁sql ,添加 offset,limit,實現自動分頁。

需要前台傳遞參數currentPage和pageSize兩個參數,分別是當前頁和每頁數量,controller層把參數傳遞給service層即可,下面是service實現的代碼:

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層接口:

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文件:

<?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調用接口,傳入對應的參數,即可實現分頁查詢數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM