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> { @Override
protected 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;
} }
}

mybatis分页的一种解决方案的更多相关文章

  1. Mybatis多参传递的四种解决方案

    Mybatis多参传递的四种解决方案 代码异常:org.apache.ibatis.binding.BindingException: Parameter 'param' not found. 长时间 ...

  2. Mybatis分页插件PageHelper的配置和使用方法

     Mybatis分页插件PageHelper的配置和使用方法 前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页. 前端分 ...

  3. SSM 使用 mybatis 分页插件 pagehepler 实现分页

    使用分页插件的原因,简化了sql代码的写法,实现较好的物理分页,比写一段完整的分页sql代码,也能减少了误差性. Mybatis分页插件 demo 项目地址:https://gitee.com/fre ...

  4. MyBatis3-实现MyBatis分页

    此文章中的例子是沿用上一篇文章http://www.cnblogs.com/EasonJim/p/7055499.html的Spring MVC集成的例子改装的. MyBatis分页有以下方式实现: ...

  5. Mybatis学习---Mybatis分页插件 - PageHelper

    1. Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,S ...

  6. Mybatis分页插件PageHelper的实现

    Mybatis分页插件PageHelper的实现 前言 分页这个概念在做web网站的时候很多都会碰到 说它简单吧 其实也简单 小型的网站,完全可以自己写一个,首先查出数据库总条数,然后按照分页大小分为 ...

  7. 轻量级封装DbUtils&Mybatis之三MyBatis分页

    MyBatis假分页 参考DefaultResultSetHandler的skipRows方法. 温馨提示:部分代码请参考轻量级封装DbUtils&Mybatis之一概要 解决方案 1)之前公 ...

  8. MyBatis分页组件--PageHelper

    一.介绍 PageHelper是国内非常优秀的一款开源的 mybatis 分页插件,它支持基本主流与常用的数据库,例如 Oracle.Mysql.MariaDB.SQLite.Hsqldb 等. 官网 ...

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

    如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊情况请看重要提示. 想要使用分页插件?请看如何使用分页插件. 物理分页 该 ...

随机推荐

  1. X264-应用工程

    接下来的几篇博客中,具体学习下X264的实现过程. 源代码的分析参考了雷神的博客,感谢雷神!博客链接:https://blog.csdn.net/leixiaohua1020/article/deta ...

  2. 基本运算符,流程控制if、while

    基本运算符 算术运算符 运算符 描述 实例 + 加 a + b - 减 a - b * 乘 a * b / 除 a / b % 取余 a % b // 整除 a // b ** 幂运算 a ** b ...

  3. Centos7 下安装Redis4.0.6

    一.安装redis 第一步:下载redis安装包 wget http://download.redis.io/releases/redis-4.0.6.tar.gz [root@iZwz991stxd ...

  4. CentOS6.7安装Oracle数据库

  5. JS高阶---原型面试

    测试1: 分析如下 结果如下: 测试2: 测试3: 测试4: .

  6. JS高阶---对象

    四个问题 问题拓展:对象访问方式 1.属性名包含特殊字符,例如空格.-等 2.变量名不确定 变量名不确定时需要使用['属性名'] .

  7. 第14节_BLE协议ATT层

    下面这个图是BLE协议各层跟医院的各个科室的类比图: 跟医院类比,ATT层就是化验室,通过它可以得到各种检查结果──属性.这些检查结果之间有什么联系,它们组合起来体现了什么,化验室是不知道的,这些得由 ...

  8. docker 持久化存储

    1.data Volume  mysql5.7:dockerfile FROM debian:stretch-slim # add our user and group first to make s ...

  9. 【Kafka】Windows环境配置测试

    一.配置 1.Java配置:JAVA_HOME路径不要有空格 2.下载/kafka_2.11-1.1.0,地址是https://www.apache.org/dyn/closer.cgi?path=/ ...

  10. 虚拟机安装后配置IP地址

    BOOTPROTO=static   #启动的方式,dhcp表示自动获取,static表示静态ONBOOT=yes   #是否开机启动,yes表示开机启动IPADDR  #设置IP,和vmware在同 ...