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分页的一种解决方案的更多相关文章
- Mybatis多参传递的四种解决方案
Mybatis多参传递的四种解决方案 代码异常:org.apache.ibatis.binding.BindingException: Parameter 'param' not found. 长时间 ...
- Mybatis分页插件PageHelper的配置和使用方法
Mybatis分页插件PageHelper的配置和使用方法 前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页. 前端分 ...
- SSM 使用 mybatis 分页插件 pagehepler 实现分页
使用分页插件的原因,简化了sql代码的写法,实现较好的物理分页,比写一段完整的分页sql代码,也能减少了误差性. Mybatis分页插件 demo 项目地址:https://gitee.com/fre ...
- MyBatis3-实现MyBatis分页
此文章中的例子是沿用上一篇文章http://www.cnblogs.com/EasonJim/p/7055499.html的Spring MVC集成的例子改装的. MyBatis分页有以下方式实现: ...
- Mybatis学习---Mybatis分页插件 - PageHelper
1. Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,S ...
- Mybatis分页插件PageHelper的实现
Mybatis分页插件PageHelper的实现 前言 分页这个概念在做web网站的时候很多都会碰到 说它简单吧 其实也简单 小型的网站,完全可以自己写一个,首先查出数据库总条数,然后按照分页大小分为 ...
- 轻量级封装DbUtils&Mybatis之三MyBatis分页
MyBatis假分页 参考DefaultResultSetHandler的skipRows方法. 温馨提示:部分代码请参考轻量级封装DbUtils&Mybatis之一概要 解决方案 1)之前公 ...
- MyBatis分页组件--PageHelper
一.介绍 PageHelper是国内非常优秀的一款开源的 mybatis 分页插件,它支持基本主流与常用的数据库,例如 Oracle.Mysql.MariaDB.SQLite.Hsqldb 等. 官网 ...
- MyBatis学习总结(17)——Mybatis分页插件PageHelper
如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊情况请看重要提示. 想要使用分页插件?请看如何使用分页插件. 物理分页 该 ...
随机推荐
- android studio学习----gradle多渠道打包
由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了. 友盟多渠道打包 废 ...
- [b0010] windows 下 eclipse 开发 hdfs程序样例 (二)
目的: 学习windows 开发hadoop程序的配置 相关: [b0007] windows 下 eclipse 开发 hdfs程序样例 环境: 基于以下环境配置好后. [b0008] Window ...
- pm2入门
简介 PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控.自动重启.负载均衡等,而且使用非常简单. 安装 全局安装,简直不能更简单. npm install -g ...
- iptables 学习笔记
1. 安装iptables yum install iptables centos7: yum install -y iptables-services 2. service命令 查看iptables ...
- 关于VS2015 发布.net mvc 网站失败的问题
问题:VS生成成功,发布失败,在“正在连接到***文件夹”处就不能继续了.. 项目开发告一段落,准备部署到服务器上进行最后测试,但是始终发布失败 生成成功,发布失败,没有任何提示信息 一开始以为是文 ...
- Maven+SSM框架,实现单表简单的增删改查
目录 1.创建web Maven项目 2.创建java源码文件和resources资源文件 3.创建数据库配置文件:jdbc.properties 4.项目总体目录: 5.添加spring配置文件:a ...
- PAT 乙级真题 1003 我要通过!题解
1003 我要通过! (20 分) “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案 ...
- (八)OpenStack---M版---双节点搭建---Cinder安装和配置
↓↓↓↓↓↓↓↓视频已上线B站↓↓↓↓↓↓↓↓ >>>>>>传送门 1.创建数据库并授权 2.获得admin凭证执行管理员命令并创建服务证书 3.创建块存储设备AP ...
- Rust中的闭包
这个功能有点高级, 暂时理解不完全, 先把代码练正确吧. use std::thread; use std::time::Duration; struct Cacher<T> where ...
- adb命令之解锁打卡
adb devicesadb shell input keyevent 26 按手机电源键adb shell input swipe 400 1080 40 ...