亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MyBatis分頁插件PageHelper如何使用

發布時間:2023-02-24 14:21:04 來源:億速云 閱讀:120 作者:iii 欄目:開發技術

本篇內容介紹了“MyBatis分頁插件PageHelper如何使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

MyBatis使?PageHelper

1.limit分?

(1)概念:

①頁碼:pageNum(用戶會發送請求,攜帶頁碼pageNum給服務器

②每頁顯示的記錄條數:pageSize,例如:百度默認的是每頁展示10條記錄

③實際上每一次在進行分頁請求發送的時候,都是要發送兩個數據:pageNum和pageSize給服務器

④實際上前端提交表單的數據格式應如下:uri?pageNum=1&pageSize=10,后端調用request.getParameter方法獲取到對應的頁碼和每頁顯示的記錄條數

(2)mysql當中的分頁SQL應該怎么寫?

①使用limit關鍵字,語法格式:limit startIndex,pageSize

②第?個數字:startIndex(起始下標,下標從0開始)

③第?個數字:pageSize(每?顯示的記錄條數)

④假設已知?碼pageNum,還有每?顯示的記錄條數pageSize,那么第?個數字是可以動態的獲取的:startIndex = (pageNum - 1) * pageSize

(3)標準通?的mysql分?SQL:

select * 
from tableName ...... 
limit (pageNum - 1) * pageSize, pageSize

(4)使用limit關鍵字編寫代碼進行分頁

三兄弟之一:CarMapper接口,編寫方法

package com.bjpowernode.mybatis.mapper;
import com.bjpowernode.mybatis.pojo.Car;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface CarMapper {
    /**
     * 分頁查詢
     * @param startIndex 起始下標
     * @param pageSize  每頁顯示的記錄條數
     * @return
     */
    List<Car> selectAllByPage(@Param("startIndex") int startIndex, @Param("pageSize") int pageSize);
}

三兄弟之二:CarMapper.xml文件,編寫sql語句

<?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.bjpowernode.mybatis.mapper.CarMapper">
  <select id="selectAllByPage" resultType="Car" >
    select * from t_car limit #{startInde},#{pageSize}
  </select>
</mapper>

三兄弟之三:CarMappeTest類,用來編寫測試類

package com.bjpowernode.mybatis.test;
import com.bjpowernode.mybatis.mapper.CarMapper;
import com.bjpowernode.mybatis.pojo.Car;
import com.bjpowernode.mybatis.utils.SqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class CarMapperTest {
    @Test
    public void testSelectAllByPage(){
        // 應該是從前端獲取到頁碼
        int pageNum = 2;
        // 應該是從前端獲取到每頁顯示的條數
        int pageSize = 2;
        // 起始下標
        int startIndex = (pageNum-1)*pageSize;
        SqlSession sqlSession = SqlSessionUtil.openSession();
        CarMapper mapper = sqlSession.getMapper(CarMapper.class);
        List<Car> cars = mapper.selectAllByPage(startIndex, pageSize);
        cars.forEach(car -> System.out.println(car));
        sqlSession.close();
    }
}

執行結果:

MyBatis分頁插件PageHelper如何使用

對應的是數據庫表中:起始下標為2開始的后兩條數據(下標從0開始)

MyBatis分頁插件PageHelper如何使用

(5)其實獲取數據并不難,難的是獲取分?相關的數據?較難(例如:總記錄條數、是否有上/下一頁、分頁的導航顯示多少個);這些可以借助mybatis的PageHelper插件。

MyBatis分頁插件PageHelper如何使用

2.PageHelper插件

使?PageHelper插件進?分?,更加的便捷!

第一步:pom.xml中引入依賴

<dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper</artifactId>
     <version>5.3.1</version>
</dependency>

第二步:在mybatis-config.xml?件中配置插件

<!--mybatis分頁的攔截器-->
<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

第三步:編寫Java代碼

三兄弟之一:CarMapper接口,編寫方法

package com.bjpowernode.mybatis.mapper;
import com.bjpowernode.mybatis.pojo.Car;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface CarMapper {
    /**
     * 查詢所有的Car,通過分頁查詢插件PageHelper完成
     * @return
     */
    List<Car> selectAll();
}

三兄弟之二:CarMapper.xml文件,編寫sql語句

使用了分頁插件PageHelper就不需要使用limit關鍵字了,直接正常查詢即可!

<?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.bjpowernode.mybatis.mapper.CarMapper"> 
  <select id="selectAll" resultType="Car">
      select * from t_car
  </select>
</mapper>

三兄弟之三:CarMappeTest類,用來編寫測試類

注:在執行DQL語句之前,開啟分頁功能!

調用PageHelper的startPage(pageNum,pageSize)方法:

①第一個參數是頁碼pageNum

②第二個參數還是每頁顯示的記錄條數pageSize

package com.bjpowernode.mybatis.test;
import com.bjpowernode.mybatis.mapper.CarMapper;
import com.bjpowernode.mybatis.pojo.Car;
import com.bjpowernode.mybatis.utils.SqlSessionUtil;
import com.github.pagehelper.PageHelper;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class CarMapperTest {
    @Test
    public void testSelectAll(){
        SqlSession sqlSession = SqlSessionUtil.openSession();
        CarMapper mapper = sqlSession.getMapper(CarMapper.class);
        // 在執行DQL語句之前,開啟分頁
        int pageNum = 2; // 第二頁
        int pageSize = 3; // 每頁顯示的條數
        PageHelper.startPage(pageNum,pageSize);
        List<Car> cars = mapper.selectAll();
        cars.forEach(car -> System.out.println(car));
        sqlSession.close();
    }
}

執行結果:實際上PageHelper是在SQL語句后面自動加上了limit關鍵字

MyBatis分頁插件PageHelper如何使用

第2頁,每頁顯示的條數是3,對應的數據庫表中的數據就是:

MyBatis分頁插件PageHelper如何使用

第四步:獲取PageInfo對象

關鍵點:

①在查詢語句之前,開啟分?功能。

②在查詢語句之后,封裝PageInfo對象(PageInfo對象將來會存儲到request域當中。在??上展示)

package com.bjpowernode.mybatis.test;
import com.bjpowernode.mybatis.mapper.CarMapper;
import com.bjpowernode.mybatis.pojo.Car;
import com.bjpowernode.mybatis.utils.SqlSessionUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class CarMapperTest {
    @Test
    public void testSelectAll(){
        SqlSession sqlSession = SqlSessionUtil.openSession();
        CarMapper mapper = sqlSession.getMapper(CarMapper.class);
        // 1. 在執行DQL語句之前,開啟分頁
        int pageNum = 1; // 第一頁
        int pageSize = 3; // 每頁顯示的條數
        PageHelper.startPage(pageNum,pageSize);
        // 2. 執行SQL語句
        List<Car> cars = mapper.selectAll();
        // 3. 執行DQL之后,封裝PageInfo對象,new PageInfo對象
        // 第二個參數就是分頁導航的卡片個數
        PageInfo<Car> carPageInfo = new PageInfo<>(cars, 3);
        System.out.println(carPageInfo);
        sqlSession.close();
    }
}

執行結果:

列舉幾個常用的屬性:

①pageNum-頁碼, pageSize-每頁顯示的記錄, size=3, startRow-從第幾條數據開始, endRow-從第幾條數據結束, total-總記錄條數, pages-頁數,

②prePage-上一頁的頁碼, nextPage-下一頁的頁碼, isFirstPage-,是否是第一頁 isLastPage-是否是最后一頁, hasPreviousPage-有沒有上一頁, hasNextPage-有沒有下一頁

③navigatePages-導航頁碼, navigateFirstPage-導航第一頁是幾, navigateLastPage-導航最后一頁是幾, navigatepageNums-存在數據的導航頁

MyBatis分頁插件PageHelper如何使用

怎么用?

在javaweb當中,代用request.setAttribute("pageInfo",carPageInfo)方法,把數據放到request域當中;然后從request域當中取出分頁的信息,在前端進行展示!

“MyBatis分頁插件PageHelper如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泸溪县| 怀远县| 庐江县| 清丰县| 绥宁县| 肇东市| 澎湖县| 通榆县| 密山市| 田阳县| 常山县| 仁布县| 沽源县| 新建县| 桂东县| 汉中市| 察哈| 黎城县| 工布江达县| 伊宁市| 建湖县| 嘉禾县| 汨罗市| 利川市| 濮阳县| 南丰县| 南京市| 乳山市| 潍坊市| 锦州市| 高雄市| 博罗县| 高淳县| 姚安县| 保康县| 瑞安市| 通江县| 镇江市| 正宁县| 无锡市| 西昌市|