Mybatis利用分頁插件PageHelper快速實(shí)現(xiàn)分頁查詢
前言
Mybatis算是對數(shù)據(jù)庫操作的利器了。但是在處理分頁的時(shí)候,Mybatis并沒有什么特別的方法,一般需要自己去寫limit子句實(shí)現(xiàn),成本較高。好在有國內(nèi)開發(fā)者寫了一個(gè)PageHelper插件,可以幫助我們快速實(shí)現(xiàn)分頁查詢。
首先創(chuàng)建一個(gè)Maven項(xiàng)目
導(dǎo)入相關(guān)依賴:
<!-- 依賴列表--> <dependencies> <!-- mysql驅(qū)動(dòng)--> <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)建一個(gè)sqlMapConfig.xml文件,用于做一些全局的mybatis基本的配置,例如數(shù)據(jù)庫連接信息,事務(wù),mapper映射文件路徑,日志實(shí)現(xiàn),類的別名,也包含了分頁插件的基本配置。
<configuration> <!--使用外部屬性配置文件 resource:指定類路徑下的某個(gè)屬性配置文件--> <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 的時(shí)候,就不進(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)證攔截的教程
我們寫的任何一個(gè)項(xiàng)目,都應(yīng)該有安全防護(hù),不應(yīng)該讓這個(gè)項(xiàng)目進(jìn)行“裸奔”,否則很容易被別人進(jìn)行攻擊。而在SpringBoot環(huán)境中,其實(shí)可以很容易實(shí)現(xiàn)安全保護(hù),本文給大家介紹SpringBoot如何整合SpringSecurity實(shí)現(xiàn)認(rèn)證攔截,需要的朋友可以參考下2023-05-05SpringBoot實(shí)現(xiàn)國際化過程詳解
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)國際化過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Tomcat能起開,但是訪問不進(jìn)8080首頁的問題解決方案
這篇文章主要介紹了Tomcat能起開,但是訪問不進(jìn)8080首頁的問題解決方案的相關(guān)資料,需要的朋友可以參考下2016-10-10