MyBatis 分页插件 PageHelper 使用
1.? 引入Maven依赖1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 modelVersion>4.0.0</ 5 6 groupId>com.cjs.example 7 artifactId>cjs-mybatis-example 8 version>0.0.1-SNAPSHOT 9 packaging>jar10 11 name12 description></13 14 parent15 >org.springframework.boot16 >spring-boot-starter-parent17 >2.0.3.RELEASE18 relativePath/> <!-- lookup parent from repository --> 19 20 21 properties22 project.build.sourceEncoding>UTF-823 project.reporting.outputEncoding24 java.version>1.825 26 27 dependencies28 dependency29 30 >spring-boot-starter-web31 32 33 34 >spring-boot-starter-thymeleaf35 36 37 >org.mybatis.spring.boot38 >mybatis-spring-boot-starter39 >1.3.240 41 42 >com.github.pagehelper43 >pagehelper-spring-boot-starter44 >1.2.545 46 47 48 >mysql49 >mysql-connector-java50 scope>runtime51 52 53 54 55 >spring-boot-starter-test56 >test57 58 59 60 build61 plugins62 plugin63 64 >spring-boot-maven-plugin65 66 67 http://www.mybatis.org/generator/configreference/xmlconfig.html 68 http://www.mybatis.org/generator/running/runningWithMaven.html 69 mvn mybatis-generator:generate 70 mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate 71 72 >org.mybatis.generator73 >mybatis-generator-maven-plugin74 >1.3.775 76 77 78 79 80 project> 2.? 生成Mapper文件在src/main/resources下创建一个generatorConfig.xml文件,然后在终端命令行下执行? mvn mybatis-generator:generate 即可自动生成 具体参见??http://www.mybatis.org/generator/running/runningWithMaven.html <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" 6 7 8 generatorConfigurationclassPathEntry location="C:/Users/Administrator/.m2/repository/mysql/mysql-connector-java/5.1.46/mysql-connector-java-5.1.46.jar" /> context id="DB2Tables" targetRuntime="MyBatis3"12 jdbcConnection driverClass="com.mysql.jdbc.Driver" 13 connectionURL="jdbc:mysql://10.123.52.189:3306/oh_coupon" 14 userId="devdb" 15 password="d^V$0Fu!/6-<"jdbcConnection17 javaTypeResolver 19 property ="forceBigDecimals" value="false" 20 javaTypeResolver21 javaModelGenerator targetPackage="com.cjs.example.model" targetProject="src/main/java"23 ="enableSubPackages"24 ="trimStrings"="true" 25 javaModelGenerator27 sqlMapGenerator ="mapper" targetProject="src/main/resources"28 29 sqlMapGenerator30 javaClientGenerator type="XMLMAPPER" targetPackage="com.cjs.example.dao"32 33 javaClientGenerator34 table tableName="tb_coupon" domainObjectName="Coupon" 36 ignoreColumn column="FRED" 37 table38 39 context40 > 3.? application.yml配置spring: datasource: url: jdbc:mysql://10.123.52.189:3306/oh_coupon username: devdb password: d^V$0Fu!/6-< driver-class-name: com.mysql.jdbc.Driver mybatis: type-aliases-package: com.cjs.example.model mapper-locations: classpath:mapper/*.xml pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true row-bounds-with-count: true logging: level: com.cjs.example.dao: debug 4.? PageHelper用法具体用法文档中写得比较详细了,这里只结合实际项目情况,给出演示: 参见?? https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/en/HowToUse.md https://github.com/pagehelper/Mybatis-PageHelper Mapperpackage com.cjs.example.dao; 2 3 import com.cjs.example.model.Coupon; 4 com.cjs.example.model.CouponExample; 5 java.util.List; 6 7 com.github.pagehelper.PageRowBounds; org.apache.ibatis.annotations.Mapper; 9 org.springframework.stereotype.Repository; 11 @Repository 12 @Mapper 13 public interface CouponMapper { 14 15 List<Coupon> selectByExample(CouponExample example); 16 17 List<Coupon> selectByExample(CouponExample example,PageRowBounds pageRowBounds); 18 19 } Service1 com.cjs.example.service.impl; 2 3 com.cjs.example.dao.CouponMapper; 4 5 6 com.cjs.example.service.CouponService; 7 com.github.pagehelper.Page; 8 com.github.pagehelper.PageHelper; 9 com.github.pagehelper.PageInfo; 10 11 org.springframework.beans.factory.annotation.Autowired; 12 org.springframework.stereotype.Service; 13 14 15 16 /** 17 * https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/en/HowToUse.md 18 */ 19 @Service 20 class CouponServiceImpl implements CouponService { 21 22 @Autowired 23 private CouponMapper couponMapper; 24 25 26 * 静态方法startPage 27 28 @Override 29 public List<Coupon> getCouponListByPage(CouponExample couponExample,Integer pageNum,Integer pageSize) { 30 // 在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。 31 只要你可以保证在 PageHelper 方法调用后紧跟 MyBatis 查询方法,这就是安全的 32 PageHelper.startPage(pageNum,pageSize); 33 return couponMapper.selectByExample(couponExample); 34 } 35 36 37 * 分页时,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E> 38 * 因为 public class Page<E> extends ArrayList<E> implements Closeable 39 40 41 public Page<Coupon> getCouponListByPage1(CouponExample couponExample,1)"> 42 43 List<Coupon> list = 44 if (null != list) { 45 Page<Coupon> page = (Page<Coupon>) list; 46 System.out.println(page); 47 page; 48 } 49 return null; 50 51 52 53 * 用PageRowBounds 54 55 56 getCouponListByPage2(CouponExample couponExample,1)"> 57 PageRowBounds pageRowBounds = new PageRowBounds(pageNum,1)"> 58 List<Coupon> couponList = couponMapper.selectByExample(couponExample,pageRowBounds); 59 60 System.out.println(pageRowBounds.getTotal()); 61 62 Page<Coupon> page = (Page<Coupon>) couponList; 63 System.out.println(page); 64 65 couponList; 66 67 68 69 getCouponListByPage3(CouponExample couponExample,1)"> 70 Page<Coupon> page = PageHelper.startPage(pageNum,pageSize).doSelectPage(()->couponMapper.selectByExample(couponExample)); 71 72 73 74 75 76 * 方法参数 77 78 79 public PageInfo<Coupon> getCouponListByPage4(CouponExample couponExample,1)"> 80 PageInfo<Coupon> pageInfo = PageHelper.startPage(pageNum,pageSize).doSelectPageInfo(()-> 81 System.out.println(pageInfo); 82 pageInfo; 83 84 85 86 * PageInfo 87 88 89 getCouponListByPage5(CouponExample couponExample,1)"> 90 List<Coupon> list = 91 null == 92 93 94 PageInfo<Coupon> pageInfo = new PageInfo<>(list); 95 96 97 98 99 100 getCouponListByPage6(CouponExample couponExample,Integer offset,Integer limit) { 101 return (Page<Coupon>) couponMapper.selectByExample(couponExample, PageRowBounds(offset,limit)); 102 103 } Controllercom.cjs.example.controller; com.cjs.example.domain.PageBean; 10 org.springframework.web.bind.annotation.RequestMapping; org.springframework.web.bind.annotation.RestController; 12 15 @RestController 16 @RequestMapping("/coupon") 17 class CouponController { 18 19 20 CouponService couponService; 22 @RequestMapping("/list"23 list() { 24 CouponExample example = CouponExample(); return couponService.getCouponListByPage(example,1,5); 26 27 28 @RequestMapping("/list2"29 list2() { 30 CouponExample example = return couponService.getCouponListByPage2(example,1)">32 33 34 @RequestMapping("/list3"35 list3() { 36 CouponExample example = return couponService.getCouponListByPage3(example,1)">38 39 40 @RequestMapping("/list4"41 list4() { 42 CouponExample example = 43 return couponService.getCouponListByPage4(example,1)">44 45 46 @RequestMapping("/list5"47 list5() { 48 CouponExample example = 49 return couponService.getCouponListByPage5(example,1)">50 51 52 53 54 * Bootstrap Table 55 * http://bootstrap-table.wenzhixin.net.cn/documentation/ 56 57 @RequestMapping("/listPage"public PageBean<Coupon> listPage(Integer offset,1)">59 CouponExample example = 60 example.or().andVendorIdEqualTo(10001L).andYnEqualTo(161 Page<Coupon> page = couponService.getCouponListByPage6(example,offset,limit); 62 PageBean<Coupon> pageBean = new PageBean<>(); 63 pageBean.setTotal(page.getTotal()); 64 pageBean.setRows(page.getResult()); 65 pageBean; 66 67 } 5.? index.htmlhttp://bootstrap-table.wenzhixin.net.cn/documentation/ DOCTYPE htmlhtml lang="zh"headmeta charset="UTF-8" 5 title>Indexlink rel="stylesheet" href="/bootstrap-3.3.7-dist/css/bootstrap.min.css"="/bootstrap-table/bootstrap-table.css" 9 10 script src="/jquery/jquery-3.3.1.min.js"script="/bootstrap-3.3.7-dist/js/bootstrap.min.js"="/bootstrap-table/bootstrap-table.js"13 ="/bootstrap-table/locale/bootstrap-table-zh-CN.js"14 body16 div ="row"="col-xs-6"18 ="table"19 div22 ="text/javascript"23 /** 24 * http://bootstrap-table.wenzhixin.net.cn/documentation/ 25 26 $('#table).bootstrapTable({ 27 sidePagination: server,// 服务器端分页 28 pagination: true29 pageNumber: 130 pageSize: 1031 url: /coupon/listPage32 columns: [{ 33 field: id34 title: ID35 sortable: true 36 },{ 37 couponName38 名称' 39 40 couponNum41 数量42 43 couponAmount44 金额45 46 releaseStartTime47 开始时间48 49 50 结束时间51 }] 52 }); html> 6.? 分页效果7.? 工程结构及源码代码上传至??https://github.com/chengjiansheng/cjs-mybatis-example.git 8.? 小结个人感觉,还是PageRowBounds和PageHelper.startPage(pageNum,pageSize).doSelectPage()比较实用 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |