Sprin Boot2.0之整合Mybatis整合分頁外掛
阿新 • • 發佈:2018-11-08
pageHelper
PageHelper 是一款好用的開源免費的 Mybatis 第三方物理分頁外掛
物理分頁
支援常見的 12 種資料庫。Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer 等
支援多種分頁方式
支援常見的 RowBounds(PageRowBounds),PageHelper.startPage 方法呼叫,Mapper 介面引數呼叫
pageHelper底層會幫助生成一下分頁語句 limit相關
廢話不多說,趕緊動手!
pom檔案:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>pageHelper</groupId> <artifactId>com.toov5.pageHelper</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- 測試 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <!-- mysql 依賴 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- springboot-web元件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- springboot 整合 pagehelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.7</version> </dependency> </dependencies> </project>
application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver logging.level.com.example.demo.dao=DEBUG pagehelper.helperDialect=mysql pagehelper.reasonable=true pagehelper.supportMethodsArguments=true pagehelper.params=count=countSql pagehelper.page-size-zero=true
entity:
package com.toov5.entity; import lombok.Data; @Data public class User { private Integer id; private String name; private Integer age; }
mapper:
package com.toov5.mapper; import java.util.List; import org.apache.ibatis.annotations.Select; import com.toov5.entity.User;public interface UserMapper { @Select("SELECT * FROM USERS ") List<User> findUserList(); }
service
package com.toov5.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.toov5.entity.User; import com.toov5.mapper.UserMapper; @Service public class UserService { @Autowired private UserMapper userMapper; //當前頁 一頁多少個 mysql通過limit分頁的哈 public PageInfo<User> findUserList(int page, int size) { // 開啟分頁外掛,放在查詢語句上面 幫助生成分頁語句 PageHelper.startPage(page, size); //底層實現原理採用改寫語句 將下面的方法中的sql語句獲取到然後做個拼接 limit AOPjishu List<User> listUser = userMapper.findUserList(); // 封裝分頁之後的資料 返回給客戶端展示 PageInfo做了一些封裝 作為一個類 PageInfo<User> pageInfoUser = new PageInfo<User>(listUser); return pageInfoUser; } }
controller
package com.toov5.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.github.pagehelper.PageInfo; import com.toov5.entity.User; import com.toov5.service.UserService; @RestController public class IndexController { @Autowired private UserService userService; @RequestMapping("/findUserList") public PageInfo<User> findUserList(int page, int size) { System.out.println("#############################"); return userService.findUserList(page, size); } }
啟動類
package com.toov5; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @MapperScan("com.toov5.*") @SpringBootApplication public class PageHelper { public static void main(String[] args) { SpringApplication.run(PageHelper.class, args); } }
專案啟動:
訪問
json解析:
{ "total": 4, "list": [{ "id": 1, "name": "toov5", "age": 12 }, { "id": 2, "name": "cc", "age": 99 }], "pageNum": 1, "pageSize": 2, "size": 2, "startRow": 1, "endRow": 2, "pages": 2, "prePage": 0, "nextPage": 2, "isFirstPage": true, "isLastPage": false, "hasPreviousPage": false, "hasNextPage": true, "navigatePages": 8, "navigatepageNums": [1, 2], "navigateFirstPage": 1, "navigateLastPage": 2, "firstPage": 1, "lastPage": 2 }
小夥伴們是不是返回的資訊量十足呀~
PS:如果每個查詢方面前面都這樣:
如果每個方法查詢之前 之後 都加這麼個方法的話 很冗餘啊
冗餘 則 aop封裝
模板設計方法模式!!!哈哈哈 有興趣的可以玩玩