【Mybatis】动态SQL之choose标签

  • 1、Pojo
  • 2、Dao
  • 3、Service
  • 4、ServiceImpl
  • 5、xml配置文件
  • 6、Controller
  • 7、测试

1、Pojo

package com.yczxyy.paperfree.dto.jhemr;import io.swagger.annotations.ApiModelProperty;
import lombok.Data;/*** @author potential*/
@Data
public class JobEmrMonitor {@ApiModelProperty(value = "监控代码编号")private String MONITOR_ITEM_CODE;@ApiModelProperty(value = "监控代码名称")private String MONITOR_ITEM_NAME;
}

2、Dao

List<JobEmrMonitor> getMonitor1(JobEmrMonitor jobEmrMonitor);

3、Service

List<JobEmrMonitor> getMonitor1(JobEmrMonitor jobEmrMonitor);

4、ServiceImpl

@Override
public List<JobEmrMonitor> getMonitor1(JobEmrMonitor jobEmrMonitor) {return dmsZhiKongRuleDao.getMonitor1(jobEmrMonitor);
}

5、xml配置文件

    <select id="getMonitor1" parameterType="com.yczxyy.paperfree.dto.jhemr.JobEmrMonitor" resultType="com.yczxyy.paperfree.dto.jhemr.JobEmrMonitor">select MONITOR_ITEM_CODE MONITOR_ITEM_CODE,MONITOR_ITEM_NAME MONITOR_ITEM_NAMEfrom dms_monitor<where><choose><when test="MONITOR_ITEM_NAME !=null">MONITOR_ITEM_NAME like concat('%',#{MONITOR_ITEM_NAME},'%')</when><when test="MONITOR_ITEM_CODE !=null">MONITOR_ITEM_CODE like concat('%',#{MONITOR_ITEM_CODE},'%')</when><when test="MONITOR_ITEM_CODE !=null and MONITOR_ITEM_NAME!=null">and MONITOR_ITEM_NAME like concat('%',#{MONITOR_ITEM_NAME},'%')</when>
<!--        <otherwise>-->
<!--            and MONITOR_ITEM_NAME like concat('%',#{MONITOR_ITEM_NAME},'%')-->
<!--        </otherwise>--></choose></where></select>

注意:
这里重点解释一下xml配置文件中的动态SQL含义。
       1、首先是 where标签,where标签里面包含 就是查询的条件
       2、接下来是choose标签,choose标签中的就是可供选择的条件
       3、when标签 就是每一个查询条件 当满足第一个查询条件的时候,就直接开始查询了;如果第一个查询条件不满足,就来看第二个查询条件,若满足,就进行查询,程序结束;如都不符合,这里又分为两种情况:(1)when标签中的查询条件都不符合,但是又必须插入参数,那么就使用otherwise标签,来控制,使得必须有一个基本条件 即otherwise这个标签中的内容满足才可以进行查询,否则报错;(2)若when标签中的查询条件不符合,但是又不需要控制必要的参数,也就是说,即使不传入任何参数,那么也会有东西返回,即将表中内容全部返回。

6、Controller

@ApiOperation("监控代码/名称 字典2")
@PostMapping("getMonitorNameAndCode1")
public CommonResult getMonitorNameAndCode1(@Validated  JobEmrMonitor jobEmrMonitor){ArrayList<JobEmrMonitor> list = new ArrayList<>();list=(ArrayList<JobEmrMonitor>) dmsZhiKongRuleService.getMonitor1(jobEmrMonitor);return CommonResult.success(list);
}

7、测试

7.1 只输入MONITOR_ITEM_CODE,会根据MONITOR_ITEM_CODE进行动态模糊查询,返回满足条件的内容。

7.2 只输入MONITOR_ITEM_NAME,会根据MONITOR_ITEM_NAME进行模糊查询,返回满足条件的内容。

7.3 参数什么都不传 在什么都不传的情况下,依然会有返回值,即返回表中全部内容。

【Mybatis】动态SQL之choose标签相关推荐

  1. MyBatis——动态SQL语句——if标签和where标签复合使用

    功能需求 根据性别和名字查询用户 官方文档 MyBatis--动态 SQL SQL语句 SELECT id, username, birthday, sex, address FROM `user` ...

  2. MyBatis动态sql之choose(when、otherwise)用法

    if标签是与(and)的关系,只要test中的表达式为 true,就会执行 if 标签中的条件;而 choose 是或(or)的关系,并不想应用所有的条件,而只是想从多个选项中选择一个. choose ...

  3. mybatis动态sql中where标签的使用

    where标记的作用类似于动态sql中的set标记,他的作用主要是用来简化sql语句中where条件判断的书写的,如下所示: <select id="selectByParams&qu ...

  4. 9.mybatis动态SQL标签的用法

    mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦 ...

  5. 面试题—Mybatis动态sql是什么意思?常用的标签有哪些和用途?

    传统jdbc方法中,在写组合的多表复杂sql语句时,需要去拼接sql语句,稍不注意少写一个空格或"",就会导致报错. 这个Mybatis动态sql的功能,就拥有有效的解决了这个问题 ...

  6. 动态SQL之choose、when、otherwise标签

    动态SQL之choose.when.otherwise标签 choose.when.otherwise chose:父标签 when:相当于if...else if,只要有一个条件成立,其它的都不判断 ...

  7. Mybatis 动态sql语句(if标签和where标签)

    功能:根据性别和名字查询用户 查询sql语句: SELECT id, username, birthday, sex, address FROM `user` WHERE sex = 1 AND us ...

  8. MyBatis动态SQL(认真看看, 以后写SQL就爽多了)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:cnblogs.com/homejim/p/9909657. ...

  9. 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL:

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 阿进的写字台 来源 | cnblogs.com ...

  10. MyBatis动态SQL,写SQL更爽

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客: ...

最新文章

  1. 【图论专题】单源最短路的扩展应用
  2. 使用WinSCP在WIndows与树莓派之间传递文件
  3. DotNet语音技术实现(实现电脑发音)
  4. c语言memset函数用法,深入学习C语言中memset()函数的用法
  5. xshell链接kali
  6. php get raw,file_get_contents(“php:// input”)或$ HTTP_RAW_POST
  7. javascript函数式_如何以及为什么在现代JavaScript中使用函数式编程
  8. SelectSort 选择排序
  9. ibatis和hibernate
  10. 光盘安装linux16.04,cobbler安装ubuntu 16.04巨慢
  11. html一个页面分页代码怎么写,纯JS前端实现分页代码
  12. 监视Python程式自动退出,并重新启动程式
  13. 泛微oa流程表单之流程阻止提交
  14. 粉笔公考——错题集——行测
  15. 5月17号软件资讯更新合集....
  16. Power bi 4.14 桑基图
  17. Python绘制3D图形:Axes3D
  18. Windows Sockets 函数api (微软官方文档)
  19. 在java中画背景图片_JAVA如何添加背景图片?
  20. 求助!沃尔沃S40 2.4i智雅限量版这款车怎么样,能不能买?

热门文章

  1. (八)Mybatis当中#{}常用属性的用法
  2. 使用超链接实现企业QQ在线客服
  3. Android P 源码分析 5 - Low memory killer 之 lmkd 守护进程
  4. springboot点餐微信小程序毕业设计源码221144
  5. 原来这个世界还有这么纯洁的爱情!
  6. 《算法艺术与信息学竞赛》之 递推 例一 月亮之眼 vijos 1540
  7. JS内功修炼-基础篇
  8. 每天学命令deleteRow
  9. 老徐WEB:js入门学习 - javascript运算符
  10. 设置、取消word英文首字母大写