#分页工具类


/**
* 分页参数处理
*/
public class PageUtil {
/**
* 分页返回数据封装
*
* @param page
* @return Map<String, Object>
* @author Hd
* @date 2021/12/18 12:47
*/
public static Map<String, Object> toPage(Page page) {
Map<String, Object> map = new LinkedHashMap<>(2);
map.put("pages", page.getPages());
map.put("current", page.getCurrent());
map.put("total", page.getTotal());
map.put("list", page.getRecords());
return map;
}

/**
* 分页参数转化
*
* @param orderItems
* @param sqlPrefix
* @return List<OrderItem>
*/
public static List<OrderItem> toOrderItem(List<OrderItem> orderItems, String sqlPrefix) {
//OrderItem(column=updated_time, asc=false)
return orderItems
.stream()
.map(item -> new OrderItem(sqlPrefix + "." + item.getColumn(), item.isAsc()))
.collect(Collectors.toList());
}

#代码Controller
public Result listPage(ProblemInfoQueryDto problemInfoQueryDto) {
return Result.success("查询成功", problemInfoService.listPage(problemInfoQueryDto));
}

#service

Map listPage(ProblemInfoQueryDto problemInfoQueryDto);

#serviceImpl
public Map<String, Object> listPage(ProblemInfoQueryDto problemInfoDto) {
IPage<ProblemInfoVo> page = new Page<>(problemInfoDto.getPage(), problemInfoDto.getSize());
QueryWrapper<ProblemInfo> wrap = new QueryWrapper<>();
wrap.orderByDesc("id");
return PageUtil.toPage(mapper.listPage(page, wrap));
}
#mapper
Page<ProblemInfoVo> listPage(IPage<ProblemInfoVo> page,@Param(Constants.WRAPPER) QueryWrapper<ProblemInfo> wrap);

#xml
SELECT
*
FROM
tb_problem_info ${ew.customSqlSegment}

mybatis-plus 使用 sql 分页的更多相关文章

  1. springboot使用mybatis拦截进行SQL分页

    新建一个类MyPageInterceptor.java(注意在springboot中要添加注解@Component) package com.grand.p1upgrade.mapper.test; ...

  2. SpringBoot使用Mybatis注解开发教程-分页-动态sql

    代码示例可以参考个人GitHub项目kingboy-springboot-data 一.环境配置 1.引入mybatis依赖 compile( //SpringMVC 'org.springframe ...

  3. Mybatis拦截器实现分页

    本文介绍使用Mybatis拦截器,实现分页:并且在dao层,直接返回自定义的分页对象. 最终dao层结果: public interface ModelMapper { Page<Model&g ...

  4. pageHelper多个sql分页

    之前有个需求,在一个页面中需要有多个sql分页查询然后放到一个list中,展示,但是会出现一个bug,就是每次分页都会展示第一条查出的所有的数据: 第一页 第二页 因为是截的生产环境,第一条数据被处理 ...

  5. mybatis拦截器实现分页功能的示例讲解

    import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import jav ...

  6. 利用MyBatis的动态SQL特性抽象统一SQL查询接口

    1. SQL查询的统一抽象 MyBatis制动动态SQL的构造,利用动态SQL和自定义的参数Bean抽象,可以将绝大部分SQL查询抽象为一个统一接口,查询参数使用一个自定义bean继承Map,使用映射 ...

  7. SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件

    一.Mybatis框架 1.mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获 ...

  8. Oracle使用MyBatis中RowBounds实现分页查询

    Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便. 使用MyBatis中的RowBounds进行 ...

  9. MyBatis框架之SQL映射和动态SQL

    使用MyBatis实现条件查询 1.SQL映射文件: MyBatis真正的强大之处就在于SQL映射语句,MyBatis专注于SQL,对于开发人员来说也是极大限度的进行SQL调优,以保证性能.下面是SQ ...

  10. Mybatis中动态SQL语句中的parameterType不同数据类型的用法

    Mybatis中动态SQL语句中的parameterType不同数据类型的用法1. 简单数据类型,    此时#{id,jdbcType=INTEGER}中id可以取任意名字如#{a,jdbcType ...

随机推荐

  1. .NET为什么推荐它作为RabbitMQ消息队列的首选开发工具

    支持.Net Core(2.0及以上)/.Net Framework(4.5及以上),可以部署在Docker, Windows, Linux, Mac. RabbitMQ作为一款主流的消息队列工具早已 ...

  2. YouCompleteMe用法总结

    1.将.ycm_extra_conf.py拷贝到工程目录,然后打开,将自己的include目录添加进去

  3. 学习Java Day10

    今天学习了数组的相关知识

  4. JZOJ 2020.02.25【NOIP提高组】模拟A 组

    闲话 难度似乎比之前的简单了一些 但是难的题还是很难(我太菜了) 总结 针对三个题,先罗列正解所涉及的算法:字符哈希,组合数学,点分治 最后一个不会 组合数学?还好吧 字符哈希? 放在 \(T1\) ...

  5. [USACO06NOV] Round Numbers S

    题目 \(\texttt{[USACO06NOV] Round Numbers S}\) 分析 数位 \(dp\) 入门题 一般我们需要当前位置 \(pos\),有无前导零 \(lead\),高位标记 ...

  6. JZOJ 4319. 【NOIP2015模拟11.5】Lucas的数列

    题目 思路 暴力很好打,我们显然可以先把关于 \(k\) 的式子拆开 先二项式展开,然后把外面的 \(m\) 乘进去,把 \(p\) 的分母 \(m\) 消去 \(K = (\sum_{i=1}^m ...

  7. 如何获取win10用户最高权限

    第五步,在(输入对象名称)方框中输入"System Managed Accounts Group",再点击"检查名称" 转载: 百度经验:     https: ...

  8. Docker安装配置Oracle详细教程(以作持久化处理)

    Docker安装Oracle 1,拉取Oracle镜像,拉取成功后查看  docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11 ...

  9. 探索 C 语言的递归函数

    <C Primer Plus>函数章节:递归函数.结合 Visual Studio 调试理解 C 语言的递归函数,下面是书上一模一样的代码,贴在这里: #include<stdio. ...

  10. 使用expect在实现跨机器拿日志

    1.shell脚本 config_file_path=$1 #集群的ip port=$2 #获取集群服务端口中的日志 sjc=$3 #时间戳 user_name="sdbadmin" ...