Mybatis利用分頁插件PageHelper快速實(shí)現(xiàn)分頁查詢
前言
Mybatis算是對數(shù)據(jù)庫操作的利器了。但是在處理分頁的時候,Mybatis并沒有什么特別的方法,一般需要自己去寫limit子句實(shí)現(xiàn),成本較高。好在有國內(nèi)開發(fā)者寫了一個PageHelper插件,可以幫助我們快速實(shí)現(xiàn)分頁查詢。
首先創(chuàng)建一個Maven項(xiàng)目
導(dǎo)入相關(guān)依賴:
<!-- 依賴列表-->
<dependencies>
<!-- mysql驅(qū)動-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<!-- 單元測試-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<!-- pageHelper依賴-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.1</version>
</dependency>
<!-- mybatis依賴-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- log4j日志依賴-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
記住導(dǎo)入PageHelper依賴:
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2.1</version> </dependency>
數(shù)據(jù)庫中創(chuàng)建一張表

設(shè)置Mybatis配置文件
在resources目錄下,創(chuàng)建一個sqlMapConfig.xml文件,用于做一些全局的mybatis基本的配置,例如數(shù)據(jù)庫連接信息,事務(wù),mapper映射文件路徑,日志實(shí)現(xiàn),類的別名,也包含了分頁插件的基本配置。
<configuration>
<!--使用外部屬性配置文件 resource:指定類路徑下的某個屬性配置文件-->
<properties resource="db.properties" />
<settings>
<!--日志的實(shí)現(xiàn)是LOG4J-->
<setting name="logImpl" value="LOG4J" />
</settings>
<!--聲明別名-->
<typeAliases>
<package name="com.ren.domain" />
</typeAliases>
<!--mybatis的插件配置-->
<plugins>
<!-- com.github.pagehelper為PageHelper類所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 表示使用mysql的分頁方法 -->
<property name="helperDialect" value="mysql" />
<!-- 表示當(dāng)頁碼長度為0 的時候,就不進(jìn)行分頁查詢 -->
<property name="pageSizeZero" value="true"/>
</plugin>
</plugins>
<!-- 配置連接數(shù)據(jù)庫四要素 -->
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driverClassName}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/ren/mapper/StudentMapper.xml" />
</mappers>
</configuration>
編寫pojo實(shí)體類和mapper接口和mapper映射文件
Student實(shí)體類
package pojo;
public class Student {
private Integer id;
private String name;
private String email;
private Integer age;
public Student() {
}
public Student(Integer id, String name, String email, Integer age) {
this.id = id;
this.name = name;
this.email = email;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
", age=" + age +
'}';
}
}
mapper接口
package mapper;
import pojo.Student;
import java.util.List;
public interface StudentMapper {
//查詢所有學(xué)生
List<Student> selectAll();
}
Mapper映射文件
<?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="mapper.StudentMapper">
<select id="selectAll" resultType="pojo.Student">
select * from student order by id
</select>
</mapper>
在sqlMapConfig文件中指定Mapper文件位置
<!-- mapper映射文件位置--> <mappers> <package name="mapper"/> </mappers>
編寫MyBatisUtils
package utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
/**
* 工具類:創(chuàng)建SqlSession對象
*/
public class MyBatisUtil {
private static SqlSessionFactory factory = null;
static {
String config="sqlMapConfig.xml";
try {
InputStream inputStream =Resources.getResourceAsStream(config);
factory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//創(chuàng)建方法,獲取SqlSession對象
public static SqlSession getSqlSession(){
SqlSession session = null;
if( factory != null ){
session =factory.openSession();// openSession(true);
}
return session;
}
}
創(chuàng)建測試類
import com.github.pagehelper.PageHelper;
import mapper.StudentMapper;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import pojo.Student;
import utils.MyBatisUtil;
import java.util.List;
public class pageHelper_Test {
@Test
public void PageHelperTest(){
//獲取sqlSession
SqlSession sqlSession = MyBatisUtil.getSqlSession();
//獲取mapper代理
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
//調(diào)用PageHelper
PageHelper.startPage(2,2);
//查詢所有學(xué)生
List<Student> studentList = mapper.selectAll();
//遍歷結(jié)果List集合
studentList.forEach(student -> System.out.println(student));
//關(guān)閉sqlSession對象
sqlSession.close();
}
}
查看結(jié)果

可以看到sql語句,在mapper文件中并沒有寫limit,pageHelper已經(jīng)幫我們加上了limit關(guān)鍵字完成了查詢.OK了
總結(jié)
到此這篇關(guān)于Mybatis利用分頁插件PageHelper快速實(shí)現(xiàn)分頁查詢的文章就介紹到這了,更多相關(guān)Mybatis分頁插件PageHelper內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot整合SpringSecurity實(shí)現(xiàn)認(rèn)證攔截的教程
我們寫的任何一個項(xiàng)目,都應(yīng)該有安全防護(hù),不應(yīng)該讓這個項(xiàng)目進(jìn)行“裸奔”,否則很容易被別人進(jìn)行攻擊。而在SpringBoot環(huán)境中,其實(shí)可以很容易實(shí)現(xiàn)安全保護(hù),本文給大家介紹SpringBoot如何整合SpringSecurity實(shí)現(xiàn)認(rèn)證攔截,需要的朋友可以參考下2023-05-05
SpringBoot實(shí)現(xiàn)國際化過程詳解
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)國際化過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Tomcat能起開,但是訪問不進(jìn)8080首頁的問題解決方案
這篇文章主要介紹了Tomcat能起開,但是訪問不進(jìn)8080首頁的問題解決方案的相關(guān)資料,需要的朋友可以參考下2016-10-10

