Mybatis利用分頁(yè)插件PageHelper快速實(shí)現(xiàn)分頁(yè)查詢(xún)
Mybatis算是對(duì)數(shù)據(jù)庫(kù)操作的利器了。但是在處理分頁(yè)的時(shí)候,Mybatis并沒(méi)有什么特別的方法,一般需要自己去寫(xiě)limit子句實(shí)現(xiàn),成本較高。好在有國(guó)內(nèi)開(kāi)發(fā)者寫(xiě)了一個(gè)PageHelper插件,可以幫助我們快速實(shí)現(xiàn)分頁(yè)查詢(xún)。
官網(wǎng)地址
首先創(chuàng)建一個(gè)Maven項(xiàng)目導(dǎo)入相關(guān)依賴(lài):
<!-- 依賴(lài)列表--> <dependencies><!--mysql驅(qū)動(dòng)--><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.25</version></dependency><!--單元測(cè)試--><dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> <scope>test</scope></dependency><!--pageHelper依賴(lài)--><dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2.1</version></dependency><!--mybatis依賴(lài)--><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version></dependency><!--log4j日志依賴(lài)--><dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency> </dependencies>
記住導(dǎo)入PageHelper依賴(lài):
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.2.1</version></dependency>數(shù)據(jù)庫(kù)中創(chuàng)建一張表
在resources目錄下,創(chuàng)建一個(gè)sqlMapConfig.xml文件,用于做一些全局的mybatis基本的配置,例如數(shù)據(jù)庫(kù)連接信息,事務(wù),mapper映射文件路徑,日志實(shí)現(xiàn),類(lèi)的別名,也包含了分頁(yè)插件的基本配置。
<configuration><!--使用外部屬性配置文件 resource:指定類(lèi)路徑下的某個(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類(lèi)所在包名 --><plugin interceptor='com.github.pagehelper.PageInterceptor'><!-- 表示使用mysql的分頁(yè)方法 --><property name='helperDialect' value='mysql' /><!-- 表示當(dāng)頁(yè)碼長(zhǎng)度為0 的時(shí)候,就不進(jìn)行分頁(yè)查詢(xún) --><property name='pageSizeZero' value='true'/></plugin></plugins><!-- 配置連接數(shù)據(jù)庫(kù)四要素 --><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>編寫(xiě)pojo實(shí)體類(lèi)和mapper接口和mapper映射文件
Student實(shí)體類(lèi)
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 { //查詢(xún)所有學(xué)生 List<Student> selectAll();}
Mapper映射文件
<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE mapperPUBLIC '-//mybatis.org//DTD Mapper 3.0//EN''http://mybatis.org/dtd/mybatis-3-mapper.dtd'><mapper namespace='mapper.StudentMapper'> <select resultType='pojo.Student'>select * from student order by id </select></mapper>
在sqlMapConfig文件中指定Mapper文件位置
<!-- mapper映射文件位置--><mappers><package name='mapper'/></mappers>
編寫(xiě)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;/** * 工具類(lèi):創(chuàng)建SqlSession對(duì)象 */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對(duì)象 public static SqlSession getSqlSession(){SqlSession session = null;if( factory != null ){ session =factory.openSession();// openSession(true);}return session; }}創(chuàng)建測(cè)試類(lèi)
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(){//獲取sqlSessionSqlSession sqlSession = MyBatisUtil.getSqlSession();//獲取mapper代理StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);//調(diào)用PageHelperPageHelper.startPage(2,2);//查詢(xún)所有學(xué)生List<Student> studentList = mapper.selectAll();//遍歷結(jié)果List集合studentList.forEach(student -> System.out.println(student));//關(guān)閉sqlSession對(duì)象sqlSession.close(); }}
查看結(jié)果
可以看到sql語(yǔ)句,在mapper文件中并沒(méi)有寫(xiě)limit,pageHelper已經(jīng)幫我們加上了limit關(guān)鍵字完成了查詢(xún).OK了
總結(jié)到此這篇關(guān)于Mybatis利用分頁(yè)插件PageHelper快速實(shí)現(xiàn)分頁(yè)查詢(xún)的文章就介紹到這了,更多相關(guān)Mybatis分頁(yè)插件PageHelper內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. mysql數(shù)據(jù)庫(kù)中最常用的時(shí)間轉(zhuǎn)換函數(shù)的用法2. 在redhat 9 上安裝oracle 9.2.0.4 時(shí),DBCA 出錯(cuò)的解決辦法3. Access數(shù)據(jù)庫(kù)安全的幾個(gè)問(wèn)題4. 數(shù)據(jù)庫(kù)Oracle9i的企業(yè)管理器簡(jiǎn)介5. oracle觸發(fā)器介紹6. 導(dǎo)出錯(cuò)誤編碼的mysql數(shù)據(jù)庫(kù)7. 快速刪除ORACLE重復(fù)記錄9. MySQL基本調(diào)度策略淺析10. mysql like語(yǔ)句問(wèn)題
