mybatis-plus在Mapper类中使用@select标签进行多表联合动态条件查询
1.单表动态条件查询
1)单字段作为参数
直接用@param设置的值作为注入就好了
@Select("select * from ppms_person_message where create_time = #{testValue}")void test(@Param("testValue") String testValue);
2)对象作为参数
注意:在@param内的值不为“ew”的时候会提示找不到条件参数
@Select("select * from ppms_person_message ${ew.customSqlSegment}")Page<PersonMessage> selectTestPage(@Param("page") Page<PersonMessage> page, @Param("ew") QueryWrapper<PersonMessage> qw);
2.多表联合动态条件查询
1>使用wrapper
注意:1)${ew.customSqlSegment}仅为where下的条件
2)join on后面的条件需要使用另外的param
@Select("select m.* from ppms_person_message m " +"left join ppms_notice n on n.id = m.notice_id and n.create_time = #{testValue}" +"${ew.customSqlSegment}")void test(@Param("testValue") String testValue, @Param("ew") QueryWrapper<PersonMessage> qw);
2>使用标签
注意:1)动态条件外双引号改为单引号,内单引号改为转义双引号(")
2)使用遍历条件时需要在最外成加上<script></script>
标签
@Select("<script>" +" ( SELECT" +" '3' AS `type`," +" COUNT(*) AS `num`," +" SUBSTR( max( publish_time ), 6, 5 ) AS `time`" +" FROM ppms_notice" +" WHERE del_flag = '0' " +" )" +" UNION" +" ( SELECT" +" '1' AS `type`," +" COUNT(*) AS `messageNum`," +" SUBSTR( max( t.create_time ), 6, 5 ) AS `time`" +" FROM" +" `ppms_person_task` t" +" WHERE" +" t.`status` = '1'" +" AND (t.receiver_id = #{dto.receiverId}" +" <if test='dto.orgId != null and dto.orgId != \"\"'>" +" or t.receiver_id = #{dto.orgId}" +" </if>" +" <if test='null != dto.roleIds and dto.roleIds.size > 0'>" +" or t.receiver_id in" +" <foreach collection='dto.roleIds' item='item' close=')' open='(' separator=','>" +" #{item}" +" </foreach>" +" </if>" +" )" +" AND t.del_flag = '0'" +" )" +" UNION" +" ( SELECT" +" '2' AS `type`," +" COUNT(*) AS `num`," +" SUBSTR( max( m.create_time ), 6, 5 ) AS `time`" +" FROM" +" ppms_person_message m" +" WHERE" +" (m.receiver_id = #{dto.receiverId}" +" <if test='dto.orgId != null and dto.orgId != \"\"'>" +" or m.receiver_id = #{dto.orgId}" +" </if>" +" <if test='null != dto.roleIds and dto.roleIds.size > 0'>" +" or m.receiver_id in" +" <foreach collection='dto.roleIds' item='item' close=')' open='(' separator=','>" +" #{item}" +" </foreach>" +" </if>" +" )" +" AND m.`status` = '0'" +" AND m.del_flag = '0'" +" )" +"</script>")List<MessageRespVo> selectUnReadNumByUserId2(@Param("dto") TaskPageDto dto);
mybatis-plus在Mapper类中使用@select标签进行多表联合动态条件查询相关推荐
- uni中使用select标签后生成APP页面跳转空白
uni中使用select标签后生成APP页面跳转空白 最近再用webstrom时,写uni APP时发现一个问题 当生成apk后,带有select选择器标签的页面突然无法显示一片空白. 报错显示:Ca ...
- select html默认选中的值,HTML/jquery中的select标签设置默认选中取值
一.jQuery中的select标签设置默认选中取值 每一次操作select的时候,总是要出来翻一下资料,不如自己总结一下,以后就翻这里了. 比如 1.设置value为pxx的项选中 $(" ...
- html中select标签默认选择,HTML中的select标签如何设置默认选中的选项
方法有两种. 第一种通过的属性来设置选中项,此方法可以在动态语言如php在后台根据需要控制输出结果. 1 2 3 4 5 1 option > 2 option > 3 option &g ...
- html页面select怎么用,HTML中的select标签如何使用
HTML中select标签可以在表单上的项目中创建公共选择框,本篇文章就来给大家具体介绍一下select标签的用法. 我们首先来看一下什么是select标签? select标签是用于创建选择框的标签. ...
- struts2中s:select标签的使用
1 静态生成 <s:select name="user.sex" list="#{'0':'男','1':'女'}" label="性别&quo ...
- 有关在html中修改select标签的option selected默认选中属性实现
着急想要解决办法的朋友可以直接看最后的内容:} 一般我们使用select标签时大概都会使用到option标签来填充下拉框中的内容 只有几个固定的内容写死在页面还好,可能是这样的: <select ...
- android 获取nfc,Android:在服务类中读取NFC标签
我正在开发一个应用程序,我需要读取存储在NFC标签中的数据,通过数据我的意思是简单的整数值,如0,1,2,3等. 从NFC读取数据的function在Activity类中工作正常但我需要在后台运行应用 ...
- Mybatis实现多表关联多条件查询
第一种实现方式: 1.在实体类中添加需要展示的但在数据库表结构中字段 2.在mapper.xml的 <result column="project_name" jdbcTyp ...
- vue项目中使用cesium且使用geoserver服务,实现条件查询及拿到过滤之后的json数据
如图所示,geoserver上有自带查询功能,我们使用cesium之后,搭配geoserver的瓦片服务,也需要这个条件查询怎么办? 解决办法:使用cql_filter 其中searchName为查询 ...
最新文章
- Twitter团队最新研究:快速高效的可扩展图神经网络SIGN
- JavaScript进阶系列01,函数的声明,函数参数,函数闭包
- STL 二分查找 upper_bound和lower_bound用法
- java 只有日期的类_JAVA日期和时间类彻底解决(1)[转]
- java操作集合中 concurrentModifyException 异常的原因分析
- 文件怎么更新_iOS13屏蔽更新描述文件失效了怎么办?iOS13屏蔽系统更新教程
- centos7安装kibana5.x
- Spring Boot Mybatis 搞反向工程,太方便咯。。
- jQuery直接调用asp.net后台WebMethod方法
- 日常笔记系列:java汉字判断
- cam电路原理图 h7 openmv4_Protel电路设计软件难点解答(上)
- mysql 存储 海量图片_数据库中存储大量图片设计
- IPQ6000 WIFI6无线配置和启动过程
- Running “flutter pub get“ in xxx... 报错: Git error 443
- macOS、Linux CentOS 、Docker安装部署canal-server(canal-deployer)服务
- 有什么蓝牙耳机不贵又实用?学生党适合使用的蓝牙耳机
- Array王锐力作:osg与PhysX结合系列内容——第5节 角色动画效果(下)
- NC23053月月查华华的手机
- 【20保研】中国科学技术大学2019年第六届计算机科学暑期夏令营通知
- 什么是高可用性_什么是高可用性| 第2部分
热门文章
- 如何查看服务器资源占用情况,云服务器如何查看内存占用情况
- jvm的内存分布,参数配置 和 GC处理机制
- Makefile: 参数-I (大写字母i), -l (小写字母l) 和-L的区别
- Spectral clustering(谱聚类)算法的实现
- 《大学“电路分析基础”课程实验合集.实验四》丨线性电路特性的研究
- 使用certbot生成https证书
- 绘制正态分布概率密度函数
- c语言txt播放器,c语言播放器更新版
- 服务器要输入exit才会读系统,脚本经典小窍门
- 转载:与其亡羊补牢,不如血战群狼。——2005年中兴针对华为将展开全面攻击的预测