方式一: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. 暑假学习五 8.28日 hdfs

    文件系统 文件系统:存储和组织数据的方式,实现了数据的存储,分级组织,访问和获取,使用树状结构 数据:数据本身.文件系统元数据:文件大小,最后修改时间....描述性的数据 分布式文件系统 核心属性: ...

  2. pgsql指定部分字段去重

    -- 基于ig.start_pile,ig.end_pile 字段去重 with ete as ( SELECT * from (SELECT ROW_NUMBER() OVER(PARTITION ...

  3. 实现MybatisPlus乐观锁

    1.实体类中添加version字段及相关注解 @Version@TableField(fill = FieldFill.INSERT)//第一次添加数据时使其有个默认值1private Integer ...

  4. Linux 库的使用

    Linux 库的使用 -I头文件的路径-L动态库的路径   命名 使用 静态库 lib名字.a 静态库路径/lib名字.a 动态库 lib名字.so -L动态库路径 -l名字 编译 #静态编译 # g ...

  5. 32 项目结构 & 事务 & Logging日志

    1 项目结构 以下主要是以drf编写api时的结构为示例. 1.1 APP结构 1.1.1 单APP 例如:订单系统 1.1.2 Base + 业务APP 例如:供应链系统 1.1.3 独立的APP ...

  6. Hive. 函数 instr 的用法

    INSTR(C1,C2,I,J) 在一个字符串中搜索指定的字符,返回发现指定的字符的位置; C1 被搜索的字符串 C2 希望搜索的字符串 I 搜索的开始位置,默认为1 J 出现的位置,默认为1 sel ...

  7. 基于python-nmap的扫描代码

    本次代码只利于人员进行分析,没有啥用,小学期作业,被迫工作. 1 import tkinter 2 from tkinter import * 3 import time 4 import nmap ...

  8. 2020年第11届蓝桥杯C/C++B组 第二轮省赛

    # JJU-干干 试题A :门牌制作[问题描述]小蓝要为一条街的住户制作门牌号.这条街一共有 2020 位住户,门牌号从 1 到 2020 编号.小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符 ...

  9. 关于DELL服务器风扇远程控制失效

    关于DELL服务器风扇远程ipmitool控制失效 去年12月,公司突然断电,公司有一台DELL 720XD服务器,自从断电之后,使用ipmitool命令行控制风扇速度就失效了,因为之前忙其他的项目, ...

  10. android studio真垃圾

    开发人员写代码就行了,想用你写代码,安装配置费死个劲! 我不是针对你,除了visual studio ,所有的IDE都是垃圾.