【Mybatis】动态SQL之choose标签
【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标签相关推荐
- MyBatis——动态SQL语句——if标签和where标签复合使用
功能需求 根据性别和名字查询用户 官方文档 MyBatis--动态 SQL SQL语句 SELECT id, username, birthday, sex, address FROM `user` ...
- MyBatis动态sql之choose(when、otherwise)用法
if标签是与(and)的关系,只要test中的表达式为 true,就会执行 if 标签中的条件;而 choose 是或(or)的关系,并不想应用所有的条件,而只是想从多个选项中选择一个. choose ...
- mybatis动态sql中where标签的使用
where标记的作用类似于动态sql中的set标记,他的作用主要是用来简化sql语句中where条件判断的书写的,如下所示: <select id="selectByParams&qu ...
- 9.mybatis动态SQL标签的用法
mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦 ...
- 面试题—Mybatis动态sql是什么意思?常用的标签有哪些和用途?
传统jdbc方法中,在写组合的多表复杂sql语句时,需要去拼接sql语句,稍不注意少写一个空格或"",就会导致报错. 这个Mybatis动态sql的功能,就拥有有效的解决了这个问题 ...
- 动态SQL之choose、when、otherwise标签
动态SQL之choose.when.otherwise标签 choose.when.otherwise chose:父标签 when:相当于if...else if,只要有一个条件成立,其它的都不判断 ...
- Mybatis 动态sql语句(if标签和where标签)
功能:根据性别和名字查询用户 查询sql语句: SELECT id, username, birthday, sex, address FROM `user` WHERE sex = 1 AND us ...
- MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:cnblogs.com/homejim/p/9909657. ...
- 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL:
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 阿进的写字台 来源 | cnblogs.com ...
- MyBatis动态SQL,写SQL更爽
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客: ...
最新文章
- 【图论专题】单源最短路的扩展应用
- 使用WinSCP在WIndows与树莓派之间传递文件
- DotNet语音技术实现(实现电脑发音)
- c语言memset函数用法,深入学习C语言中memset()函数的用法
- xshell链接kali
- php get raw,file_get_contents(“php:// input”)或$ HTTP_RAW_POST
- javascript函数式_如何以及为什么在现代JavaScript中使用函数式编程
- SelectSort 选择排序
- ibatis和hibernate
- 光盘安装linux16.04,cobbler安装ubuntu 16.04巨慢
- html一个页面分页代码怎么写,纯JS前端实现分页代码
- 监视Python程式自动退出,并重新启动程式
- 泛微oa流程表单之流程阻止提交
- 粉笔公考——错题集——行测
- 5月17号软件资讯更新合集....
- Power bi 4.14 桑基图
- Python绘制3D图形:Axes3D
- Windows Sockets 函数api (微软官方文档)
- 在java中画背景图片_JAVA如何添加背景图片?
- 求助!沃尔沃S40 2.4i智雅限量版这款车怎么样,能不能买?