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标签进行多表联合动态条件查询相关推荐

  1. uni中使用select标签后生成APP页面跳转空白

    uni中使用select标签后生成APP页面跳转空白 最近再用webstrom时,写uni APP时发现一个问题 当生成apk后,带有select选择器标签的页面突然无法显示一片空白. 报错显示:Ca ...

  2. select html默认选中的值,HTML/jquery中的select标签设置默认选中取值

    一.jQuery中的select标签设置默认选中取值 每一次操作select的时候,总是要出来翻一下资料,不如自己总结一下,以后就翻这里了. 比如 1.设置value为pxx的项选中 $(" ...

  3. html中select标签默认选择,HTML中的select标签如何设置默认选中的选项

    方法有两种. 第一种通过的属性来设置选中项,此方法可以在动态语言如php在后台根据需要控制输出结果. 1 2 3 4 5 1 option > 2 option > 3 option &g ...

  4. html页面select怎么用,HTML中的select标签如何使用

    HTML中select标签可以在表单上的项目中创建公共选择框,本篇文章就来给大家具体介绍一下select标签的用法. 我们首先来看一下什么是select标签? select标签是用于创建选择框的标签. ...

  5. struts2中s:select标签的使用

    1 静态生成 <s:select name="user.sex" list="#{'0':'男','1':'女'}" label="性别&quo ...

  6. 有关在html中修改select标签的option selected默认选中属性实现

    着急想要解决办法的朋友可以直接看最后的内容:} 一般我们使用select标签时大概都会使用到option标签来填充下拉框中的内容 只有几个固定的内容写死在页面还好,可能是这样的: <select ...

  7. android 获取nfc,Android:在服务类中读取NFC标签

    我正在开发一个应用程序,我需要读取存储在NFC标签中的数据,通过数据我的意思是简单的整数值,如0,1,2,3等. 从NFC读取数据的function在Activity类中工作正常但我需要在后台运行应用 ...

  8. Mybatis实现多表关联多条件查询

    第一种实现方式: 1.在实体类中添加需要展示的但在数据库表结构中字段 2.在mapper.xml的 <result column="project_name" jdbcTyp ...

  9. vue项目中使用cesium且使用geoserver服务,实现条件查询及拿到过滤之后的json数据

    如图所示,geoserver上有自带查询功能,我们使用cesium之后,搭配geoserver的瓦片服务,也需要这个条件查询怎么办? 解决办法:使用cql_filter 其中searchName为查询 ...

最新文章

  1. Twitter团队最新研究:快速高效的可扩展图神经网络SIGN
  2. JavaScript进阶系列01,函数的声明,函数参数,函数闭包
  3. STL 二分查找 upper_bound和lower_bound用法
  4. java 只有日期的类_JAVA日期和时间类彻底解决(1)[转]
  5. java操作集合中 concurrentModifyException 异常的原因分析
  6. 文件怎么更新_iOS13屏蔽更新描述文件失效了怎么办?iOS13屏蔽系统更新教程
  7. centos7安装kibana5.x
  8. Spring Boot Mybatis 搞反向工程,太方便咯。。
  9. jQuery直接调用asp.net后台WebMethod方法
  10. 日常笔记系列:java汉字判断
  11. cam电路原理图 h7 openmv4_Protel电路设计软件难点解答(上)
  12. mysql 存储 海量图片_数据库中存储大量图片设计
  13. IPQ6000 WIFI6无线配置和启动过程
  14. Running “flutter pub get“ in xxx... 报错: Git error 443
  15. macOS、Linux CentOS 、Docker安装部署canal-server(canal-deployer)服务
  16. 有什么蓝牙耳机不贵又实用?学生党适合使用的蓝牙耳机
  17. Array王锐力作:osg与PhysX结合系列内容——第5节 角色动画效果(下)
  18. NC23053月月查华华的手机
  19. 【20保研】中国科学技术大学2019年第六届计算机科学暑期夏令营通知
  20. 什么是高可用性_什么是高可用性| 第2部分

热门文章

  1. 如何查看服务器资源占用情况,云服务器如何查看内存占用情况
  2. jvm的内存分布,参数配置 和 GC处理机制
  3. Makefile: 参数-I (大写字母i), -l (小写字母l) 和-L的区别
  4. Spectral clustering(谱聚类)算法的实现
  5. 《大学“电路分析基础”课程实验合集.实验四》丨线性电路特性的研究
  6. 使用certbot生成https证书
  7. 绘制正态分布概率密度函数
  8. c语言txt播放器,c语言播放器更新版
  9. 服务器要输入exit才会读系统,脚本经典小窍门
  10. 转载:与其亡羊补牢,不如血战群狼。——2005年中兴针对华为将展开全面攻击的预测