方式一:XML

有点繁琐,不太想用

mapper接口

public interface RoomMapper extends BaseMapper<Room> {

    List<RoomVO> getRoomPageList(Page page, @Param("roomPageReq")RoomPageReq roomPageReq);
}

xml

和常见的一样

    <select id="selectProductPage" resultType="com.xxx">
SELECT
p.id id,
ppr.product_code productCode,
p.`name` productName,
p.`url` supplyUrl,
p.`img_url` mainPicUrl,
p.carry_status carryStatus,
p.carry_status_desc carryStatusMsg,
p.create_time createTime
FROM product AS p
LEFT JOIN product_pull_record AS ppr ON p.id = ppr.product_id and ppr.`primary_sign` = 0
<where>
p.`delete_status` = 0
<if test="code != null">
and ppr.product_code =#{code}
</if>
<if test="name != null">
and p.`name` like concat("%",#{name},"%")
</if>
</where>
ORDER BY p.create_time DESC LIMIT #{index}, #{limit}
</select>

服务层

加上mybatis的分页对象,组成查询条件

自己手动加上分页参数,我个人比较喜欢这种

    public PageBean<ProductRecordResp> selectPageList(String name, Long code, Integer page, Integer limit) {
Integer index = (--page) * limit;
List<ProductRecordResp> respList = productMapper.selectProductList(name, code, index, limit);
Long count = productMapper.selectProductCount(name, code);// 与分页sql类似,用count()
return new PageBean<>(page, limit, count, respList);
}

方式二:mapper接口注解

新项目加上的,感觉不错,仿照jpa写的

mapper接口

@Mapper
public interface MessageMapper extends BaseMapper<Message> { @Select("SELECT m.`id`, mt.`project_id`, mt.`content`, UNIX_TIMESTAMP(m.`create_time`) AS create_time, m.`status` " +
"FROM `message` m LEFT JOIN `message_text` mt ON m.message_text_id = mt.id " +
"where 1=1 and ${ew.sqlSegment}")
List<MessageResponse> findMessagePage(Page<MessageResponse> pageParam, @Param(Constants.WRAPPER) QueryWrapper<MessageResponse> queryWrapper);
}

服务层

组装参数

public List<MessageResponse> findMessagePage(Long userId, Integer status, Long startTime, Long endTime, Integer page, Integer limit) {
Page<MessageResponse> pageParam = new Page<>(page, limit);
    QueryWrapper<MessageResponse> wrapper = new QueryWrapper<>();
    wrapper.eq("receive_id", userId);
    wrapper.eq(ObjectUtil.isNotNull(status), "status", status);
    wrapper.ge(ObjectUtil.isNotNull(startTime), "create_time", ObjectUtil.isNull(startTime) ? null : Times.toLocalDateTime(startTime));
    wrapper.le(ObjectUtil.isNotNull(endTime), "create_time", ObjectUtil.isNull(endTime) ? null : Times.toLocalDateTime(endTime));
     wrapper.orderByDesc("create_time"); 
    return messageMapper.findMessagePage(pageParam, wrapper);
}

MybatisPlus 实现多表联合分页条件查询的更多相关文章

  1. .net通用CMS快速开发框架——问题1:Dapper通用的多表联合分页查询怎么破?

    最近在弄一个东东,类似那种CMS的后台管理系统,方便作为其它项目的初始化框架用的. 现在遇到个问题,如标题所示:Dapper通用的多表联合分页查询怎么破? 难道只能通过拼接sql或者使用存储过程吗?我 ...

  2. 关于表 datatable的条件查询

    关于表 datatable的条件查询 从数据库中获得一个datatable dt .里面有很多的死的数据.然后,我就是要在这个表中来按条件查询,例如 dt中有个列叫"palte", ...

  3. Mybatis 的分页条件查询语句编写

    刚来到一家新公司, 翻看项目代码, 发现一位同事写的查询逻辑很好, 不用插件, 一个语句完成了分页条件查询. 而我之前一般都是在业务层对参数进行判断, 如果有条件,就调用条件查询的方法, 如果没有条件 ...

  4. 将一个多表关联的条件查询中的多表通过 create select 转化成一张单表的sql、改为会话级别临时表 【我】

    将一个多表关联的条件查询中的多表通过 create   select  转化成一张单表的sql 将结果改为创建一个会话级别的临时表: -- 根据下面这两个sql CREATE TABLE revenu ...

  5. thinkphp分页+条件查询

    最近项目上面有一个带条件查询的分页列表,一开始form用的post,点击第二页就没有跳转成功,原因是分页是get请求,post数据链接到其他页面就会被清除. 解决办法: 1.form表单method= ...

  6. SQL多表联合分页.....

    set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go /* 支持多表查询分页存储过程(事理改进)2012.3 --多表联查1 declare @Count int ...

  7. JPA简单的分页条件查询

    1,service层代码: @Override public QrCodeRecordPaging getPage(String projectId, Integer pageNumber, Inte ...

  8. 【Spring Data 系列学习】Spring Data JPA 自定义查询,分页,排序,条件查询

    Spring Boot Jpa 默认提供 CURD 的方法等方法,在日常中往往时无法满足我们业务的要求,本章节通过自定义简单查询案例进行讲解. 快速上手 项目中的pom.xml.application ...

  9. Mybatis Plus带多条件的多表联合、分页、排序查询

    目录 一.现有表 student学生表: facultylist学院表: 二.同时满足以下需求: 1.多表联合查询出学院名字 2.可以带多条件查询 3.指定页码,页数据大小进行物理分页查询 三.解决步 ...

  10. SpringBoot+SpringDataJPA如何实现自定义查询[多表,多条件,分页,自定义sql封装]

    举个例子:我们要在已经搭建好了的JPA环境下实现联合多表,多条件,多排序条件,分页查询一个表格数据,下面的表格 返回类MyJSON: public class MyJSON { private Str ...

随机推荐

  1. WC2023 游记

    不是很会写游记,随便写写吧. 一些附件 讲课资料合集(压缩后 \(\rm 31MB\))太大了,可以去 U 群下载. 由于后面很多乐子,我把相关内容打包成 zip 上传上来了. 乐子合集下载链接.(这 ...

  2. min-max 容斥简记

    min-max 容斥实际上就是这么个式子: \[\max(S_k) = \sum\limits_{T\subseteq S} (-1)^{|T|-k}\dbinom{|T|-1}{k-1}\min(T ...

  3. 2020ICPC沈阳I - Rise of Shadows

    剩余系 Problem - I - Codeforces 题意 给定 \(H,M,A\) \(2<=H,M<=10^9,\;0<=A<=\frac {H*M}2\) 假设一个钟 ...

  4. WPF使用MaterialDesign开源控件库

    在WPF控件效果这一块,很显然比winfrom要好很多,但想要做出真正好看的控件,我个人觉得还是需要用一些已有的东西比较好,比如MaterialDesign,控件种类多,自带很多图标,上手比较容易,还 ...

  5. 假设页面左侧有一个列表,点击列表某一项时,将根据当前id发起一个请求,并将响应结果展示在右侧。如果快速多次点击不同列表项,当网络不稳定时,请求返回的顺序与我点击顺序不符,导致展示的结果不是我最后一次点击的对应结果,怎么办?

    1.防抖/节流方案 ,不可完全避免,请求数据时间不一致2.如果使用ajax/axios,发起请求时可直接取消上一次未完成的请求可实现3.临时记录最后一次的id,要求服务器返回时携带id,对比选择后渲染 ...

  6. MongoDB 4.0 dump备份脚本

    #!/bin/bash#backup MongoDB #mongodump命令路径DUMP=/mongodb4.0/bin/mongodump #临时备份目录OUT_DIR=/bak/mongobak ...

  7. js滚动加载数据

    话不多说,直接上代码,有些地方需要加自己的逻辑,自己加 <!DOCTYPE html><html><head lang="en"> <me ...

  8. Echarts xAxis、yAxis

    2017年08月06日 09:10:12 数据架构师 阅读数:37641更多 所属专栏: Echarts数据可视化    版权声明:本文为博主原创文章,转载请注明来源.开发合作联系82548597@q ...

  9. 在自定义Flink1.10 Sql Sink遇到的问题

    1.org.apache.flink.table.api.TableException: Table sink does not implement a table schema. 问题:在Redis ...

  10. PHP开发支付时开启OPENSSL扩展

    开发支付功能时,发现openssl类的方法都找不到,大概知道是没有扩展,在网上收集了PHP开启openssl扩展的方法. windows下开启方法: 1: 首先检查php.ini中:extension ...