mybatis自定义分页解决方案 

1、PageSqlProvider<T> —— 提供默认的分页列表查询

package com.xinyartech.erp.core.base;import com.xinyartech.erp.core.dto.page.PageDTO;/**   * Provider默认抽象实现** @author Lynch */
public abstract class PageSqlProvider<T> {/*** 分页sql语句,注意:最外层显示字段不能包含子查询* * @return* @author Lynch*/protected abstract String preSql(PageDTO<T> pageDto);/*** 分页列表查询* * @param pageDto* @return* @author Lynch*/public String findAll(PageDTO<T> pageDto){return preSql(pageDto);}/*** 统计分页总条数* * @return* @author Lynch*/public String countAll(PageDTO<T> pageDto){String sql = preSql(pageDto);String countSql = "select count(1) " + sql.substring(sql.indexOf("from"), sql.length());return countSql;}
}

2、StudentMapper.java —— 继承PageSqlProvider<T>,重新preSql(),自动实现分页查询和总条数查询

package com.xinyartech.erp.system.mapper;import java.util.List;import org.apache.ibatis.annotations.SelectProvider;import com.xinyartech.erp.core.base.PageSqlProvider;
import com.xinyartech.erp.core.dto.page.PageDTO;
import com.xinyartech.erp.system.dto.RoleResourceDTO;
import com.xinyartech.erp.system.model.SysButton;public interface StudentMapper {@SelectProvider(type = StudentProvider.class, method = "findAll")public List<SysButton> querySysButtonList(PageDTO<RoleResourceDTO> pageDto);@SelectProvider(type = StudentProvider.class, method = "countAll")public Long count(PageDTO<RoleResourceDTO> pageDto);class StudentProvider extends PageSqlProvider<RoleResourceDTO> {@Overrideprotected String preSql(PageDTO<RoleResourceDTO> pageDto) {String sql = "select * from sys_button where 1=1";if(pageDto.getParameters().getRoleId() != null) {sql +=" and id=" + pageDto.getParameters().getRoleId();}return sql;}}
}

转载于:https://www.cnblogs.com/linjiqin/p/11429538.html

mybatis分页的一种解决方案相关推荐

  1. ElasticSearch分页查询四种解决方案与原理

    当你拼命想完成一件事的时候,你就不再是别人的对手,或者说得更确切一些,别人就不再是你的对手了,不管是谁,只要下了这个决心,他就会立刻觉得增添了无穷的力量,而他的视野也随之开阔了.--<基督山伯爵 ...

  2. 分享一个完整的Mybatis分页解决方案

    分享一个完整的Mybatis分页解决方案 参考文章: (1)分享一个完整的Mybatis分页解决方案 (2)https://www.cnblogs.com/gev-1016/p/6606114.htm ...

  3. 使用Mybatis时, 在*Mapper.xml中出现大于号小于号的问题及两种解决方案

    当我们在*Mapper.xml文件中编写SQL语句的过程中, 我们的SQL语句中可能会出现使用 >, <, >=, <= 的情况. 如, 查询在当前时间之前创建的用户, 对应的 ...

  4. Mybatis实现分页的三种方式

    文章目录 1.Limit实现分页 2.RowBounds分页(不建议使用) 3.MyBatis分页插件PageHelper(了解即可) 1.Limit实现分页 sql语句 SELECT * from ...

  5. MyBatis分页插件PageHelper使用练习

    转载自:http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown 1.环境准备: 分页插件p ...

  6. mybatis 分页需要的jar包下载_牛逼哄哄的PageHelper分页插件到底牛在哪里?

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 urlify.cn/z2IFn2 推荐:https://www.xttblog. ...

  7. python编程8g的内存够么_详解解决Python memory error的问题(四种解决方案)

    昨天在用用Pycharm读取一个200+M的CSV的过程中,竟然出现了Memory Error!简直让我怀疑自己买了个假电脑,毕竟是8G内存i7处理器,一度怀疑自己装了假的内存条....下面说一下几个 ...

  8. MyBatis学习总结(17)——Mybatis分页插件PageHelper

    2019独角兽企业重金招聘Python工程师标准>>> 如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊 ...

  9. Mybatis分页实现

    一.引言 Mybatis提供了强大的分页拦截实现,可以完美的实现分功能 二.普通的分页实现 普通分页实现即使直接在mapper文件中写分页查询语句 Messsage.xml <?xml vers ...

最新文章

  1. 解决ssh登录linux速度慢的问题(以centos7为例)
  2. nyoj1180Maze
  3. mysql聚簇索引存储结构_MySQL聚簇索引的实际应用于结构描述
  4. Revit API创建标高,单位转换
  5. mysql的命令行安装,忘记密码,密码重置问题
  6. 3.6 SM30维护表数据
  7. 阅读类app界面设计UI可临摹素材模板
  8. lucene全文检索的概念
  9. 计算机技能测试题12答案,计算机基本技能考试选择题及答_计算机一级考试练习题及答案...
  10. 新手学计算机剪辑,视频剪辑软件入门推荐!最适合初学者的四大软件!手机电脑都可以...
  11. Talk预告 | 中国科学技术大学和微软亚洲研究院联合培养博士生冷燚冲:语音识别的快速纠错模型FastCorrect
  12. 王家林人工智能AI 第七节课:四种性能优化Matrix编写AI框架实战(Gradient Descent的陷阱、及几种常见的性能优化方式实战)老师微信13928463918
  13. oracle数据库02195,数据库表空间操作 - osc_w33tzsln的个人空间 - OSCHINA - 中文开源技术交流社区...
  14. 【ES源码分析】强制合并分段(_forcemerge API)源码分析
  15. InetAddress.getByName背后发生了什么
  16. [单片机框架] [kv_sys] 实现一个简易KV键值系统(升级版)
  17. Oracle修改用户名密码
  18. 申宝投资-A股震荡下行
  19. IE 兼容性问题记录
  20. ELK搭建(五):linux系统日志监控平台搭建

热门文章

  1. 设计模式8(享元模式,解释器模式)
  2. Excel的一点小事
  3. DataSet与DataReader的区别
  4. 华为(英国)招聘CPU/GPU架构及系统软件工程师
  5. 2020 科大讯飞全球开发者大会节目单来了!
  6. 用 Python 实现溺水识别
  7. 坐标北京,Paddle Lite​ 线下交流会,助力算法落地​
  8. keil 快捷键_KEIL 那些编辑技巧与方法
  9. NeurIPS 2020 | 基于“单目标域样本”的领域自适应方法
  10. 写给小白的自然语言处理入门简介