首页 > 其他分享 >Mybatis Plus复杂条件构造

Mybatis Plus复杂条件构造

时间:2024-06-02 14:29:52浏览次数:17  
标签:qw time t2 t3 构造 Plus BroadcastSchedule Mybatis id

要求

将sql语句中where条件部分用mybatis plus的条件构造器构造出来。

SELECT t.id,t.department_id,t.program_name,t.contact_phone,t.contact_name,t.production_form,t.tv_platform,t.online_platform,t.workplace,t.workplace_name,t.second_workplace,t.departure_time,t.scenery_time,t.recording_time,t.rehearsal_time,t.end_time,t.dress_rehearsal_time,t.vehicle_used,t.recording_format,t.equipment,t.communication_channels,t.review_status,t.applicant_user_id,t.broadcast_platform,t.security,t.signalling_mode,t.attendances,t.json_expands,t.created_at,t.updated_at,t.is_del,t1.department_id AS joina_department_id,t1.department_name,t1.created_at AS joina_created_at,t1.updated_at AS joina_updated_at,t2.user_id,t2.username,t2.password,t2.phone,t2.department_id AS joinb_department_id,t2.role_id,t2.created_at AS joinb_created_at,t2.updated_at AS joinb_updated_at,t3.id AS joina_id,t3.location_name,t3.color,t3.remake1,t3.remake2,t3.remake3,t3.remake4,t3.remake5,t3.created_at AS joinc_created_at,t3.updated_at AS joinc_updated_at 
FROM broadcast_schedule t 
LEFT JOIN departments t1 ON (t1.department_id = t.department_id) 
LEFT JOIN users t2 ON (t2.user_id = t.applicant_user_id) 
LEFT JOIN workplace t3 ON (t3.id = t.workplace) 
WHERE   (t.is_del = 0) AND (t.recording_time >= '2024-06-30T00:00' OR t.recording_time <= '2024-08-03T23:59:59') OR (t.scenery_time >= '2024-06-30T00:00' OR t.scenery_time <= '2024-08-03T23:59:59') OR (t.dress_rehearsal_time >= '2024-06-30T00:00' OR t.dress_rehearsal_time <= '2024-08-03T23:59:59') OR (t.rehearsal_time >= '2024-06-30T00:00' OR t.rehearsal_time <= '2024-08-03T23:59:59')
ORDER BY t.recording_time ASC

开始构造

先将where条件分成4部分,并且分别用条件构造器表示。

t.is_del = 0

qw.eq(BroadcastSchedule::getIsDel, 0)

t.recording_time >= '2024-06-30T00:00' OR t.recording_time <= '2024-08-03T23:59:59'


qw.ge(BroadcastSchedule::getRecordingTime, startTime).or().le(BroadcastSchedule::getRecordingTime, endTime)

t.scenery_time >= '2024-06-30T00:00' OR t.scenery_time <= '2024-08-03T23:59:59'

qw -> qw.ge(BroadcastSchedule::getSceneryTime, startTime).or().le(BroadcastSchedule::getSceneryTime, endTime)

t.dress_rehearsal_time >= '2024-06-30T00:00' OR t.dress_rehearsal_time <= '2024-08-03T23:59:59'

qw -> qw.ge(BroadcastSchedule::getDressRehearsalTime,startTime).or().le(BroadcastSchedule::getDressRehearsalTime, endTime)

最后,将上面的每部分组合成一个整体。

qw.eq(BroadcastSchedule::getIsDel, 0).nested(qw -> qw.ge(BroadcastSchedule::getRecordingTime, startTime).or().le(BroadcastSchedule::getRecordingTime, endTime))
                    .or(qw -> qw.ge(BroadcastSchedule::getSceneryTime, startTime).or().le(BroadcastSchedule::getSceneryTime, endTime))
                    .or(qw -> qw.ge(BroadcastSchedule::getDressRehearsalTime,startTime).or().le(BroadcastSchedule::getDressRehearsalTime, endTime))
                    .or(qw -> qw.ge(BroadcastSchedule::getRehearsalTime, startTime).or().le(BroadcastSchedule::getRehearsalTime, endTime));

标签:qw,time,t2,t3,构造,Plus,BroadcastSchedule,Mybatis,id
From: https://blog.csdn.net/zhourongxiang1/article/details/139283349

相关文章

  • 《计算机网络微课堂》实验10 构造超网(无分类编址)
    下面我们来进行一个仿真实验,本仿真实验的目的在于帮助大家加深对IP地址第三个历史阶段,也就是构造超网的理解。构造超网也称为路由聚合,它使用无分类编制的方法。‍首先我们介绍一下本仿真实验的具体内容,构造如图所示的网络拓扑。网络中包含4个网络,假设给每个网络分配1个地......
  • C++Primer Plus第十一章类的使用,课后练习2,还是醉汉回家的故事 3,最慢和最快及平均概率
    修改程序清单11.15,使之报告N次测试中的最高、最低和平均步数(其中N是用户输入的整数)而不是报告每次测试的结果。头文件和实现文件不变,这里为大家方便还是贴上代码//vect.h--Vectorclasswith<<,modestate#if1#ifndef VECTOR_H_ #defineVECTOR_H_#include<io......
  • C++Primer Plus第十一章类的使用,课后练习1,还是醉汉回家的故事
    编程练习11.91.修改程序清单11.5,使之将一系列连续的随机漫步者位置写入到文件中。对于每个位置,用步号进行标示。另外,让该程序将初始条件(目标距离和步长)以及结果小结写入到该文件中。该文件的内容与下面类似:TargetDistance:100,stepSize:200:(xy)=(0,0)1:(x,y)=(-11.4......
  • MyBatis系统学习篇 - 分页插件
    MyBatis是一个非常流行的Java持久层框架,它简化了数据库操作的代码。分页是数据库查询中常见的需求,MyBatis本身并不直接支持分页功能,但可以通过插件来实现,从而帮助我们在查询数据库的时候更加方便快捷引入依赖<dependency><groupId>com.github.pagehelper</groupId>......
  • MyBatis中insert和insertSelective的区别
    一、本文简介主要对比了MyBatis生成的Mapper类中的insert方法和insertSelective方法的区别二、insert和insertSelective的区别insert和insertSelective是MyBatis中用于插入数据到数据库的两种方法,它们之间的主要区别在于对null值的处理方式。insert:这个方法会将实体类......
  • 【C++修行之道】类和对象(二)类的6个默认成员函数、构造函数、析构函数
    目录一、类的6个默认成员函数二、构造函数2.1概念2.2特性2.2.5自动生成默认构造函数不进行显示定义的隐患:2.2.6自动生成的构造函数意义何在?两个栈实现一个队列2.2.7 无参的构造函数和全缺省的构造函数都称为默认构造函数,并且默认构造函数只能有一个。2.4 一般......
  • 【C++修行之道】类和对象(三)拷贝构造函数
    目录一、 概念二、特征 正确的拷贝构造函数写法:拷贝函数的另一种写法 三、若未显式定义,编译器会生成默认的拷贝构造函数。四、编译器生成的默认拷贝构造函数已经可以完成字节序的值拷贝了,还需要自己显式实现吗?深拷贝的写法:五、拷贝构造函数典型调用场景:六、总结:......
  • MyBatis实战:如何将拼接的SQL打印到日志
    哈喽,大家好,我是木头左!一、前言在日常开发中,经常会遇到拼接SQL的情况,这时候,如何将拼接的SQL打印到日志,以便追踪和调试呢?本文将详细介绍MyBatis如何实现这一功能。二、MyBatis简介MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有......
  • MyBatis的XML配置:如何判断List为空并遍历拼接
    哈喽,大家好,我是木头左!大家好,欢迎来到我的博客!今天要聊一聊关于MyBatis的XML配置,如何在查询数据表时判断List是否为空,并进行遍历拼接。相信这个问题对于很多使用MyBatis的朋友来说都非常实用,所以请大家认真阅读哦!一、为什么需要判断List是否为空?在的日常开发中,经常会遇到需要......
  • Java构造方法的作业题
    基于面向对象的构造方法的调用,产生有参和无参的构造方法,使用private去保护类内访问packagecom.imooc.day01;/***@authorwangChen*@date2024/5/30*@Description*/publicclassHomeWork01{privateStringname;privateintdata;privatedou......