MyBatis choose、when和otherwise标签简介说明
转自:
MyBatis choose、when和otherwise标签简介说明
MyBatis 中动态语句 choose-when-otherwise其功能:
同Java中的switch-case-default语句相同
但是因为MyBatis没有为 if 提供对应的 else 标签
当我们需达到 if ... else 的效果时,可使用choose when otherwise标签实现
动态语句 choose-when-otherwise 语法如下
<choose><when test="判断条件1">SQL语句1</when ><when test="判断条件2">SQL语句2</when ><when test="判断条件3">SQL语句3</when ><otherwise>SQL语句4</otherwise> </choose>
choose 标签按顺序判断其内部 when 标签中的判断条件是否成立,当有一个成立,则执行相应的 SQL 语句,choose 执行结束;当都不成立,则执行 otherwise 中的 SQL 语句
例 UserInfoMapper.xml 代码
<mapper namespace="com.java265.mapper.UserInfoMapper"><select id="selectUserInfo"parameterType="com.java265.po.UserInfo"resultType="com.java265.po.UserInfo">SELECT id,name,notes,ageFROM UserInfo WHERE 1=1<choose><when test="name != null and name !=''">AND name LIKE CONCAT('%',#{name},'%')</when><when test="notes != null and notes !=''">AND notes LIKE CONCAT('%',#{notes},'%')</when><otherwise>AND age is not null</otherwise></choose></select> </mapper>
UserInfoMapper 类中
public List<UserInfo> selectUserInfo(UserInfo userInfo);
测试类
public class Test {public static void main(String[] args) throws IOException {// 读取配置文件mybatis-config.xmlInputStream config = Resources.getResourceAsStream("mybatis-config.xml"); // 根据配置文件构建SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);// 通过SqlSessionFactory创建SqlSessionSqlSession ss = ssf.openSession();UserInfo userInfo = new UserInfo();userInfo.setname("Java");List<UserInfo> userList = ss.selectList("com.java265.mapper.UserInfoMapper.selectUserInfo", userInfo);for (userInfo t : userList) {System.out.println(t);}} }
输出结果--- DEBUG [main] - ==> Preparing: SELECT id,name,notes,age FROM UserInfo WHERE 1=1 AND name LIKE CONCAT('%',?,'%')
DEBUG [main] - ==> Parameters: Java(String)
DEBUG [main] - <== Total: 1
UserInfo[id=1,name=王二,notes=java爱好者,age=88]
MyBatis choose、when和otherwise标签简介说明相关推荐
- mybatis choose标签的使用
有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个.而使用if标签时,只要test中的表达式为 true,就会执行 if 标签中的条件.MyBatis 提供了 choose 元素.if标签是 ...
- Mybatis常用的动态SQL标签讲解
先让我们看看mybatis常用动态SQL的标签有哪一些 如果mybatis和SSM整合环境不会搭建请看这篇 https://blog.csdn.net/weixin_44012722/article/ ...
- MyBatis中动态sql语句标签详解
动态 SQL 通常写在mapper包下面的地址映射配置文件(.xml)中.根据条件的不同, SQL 语句也会随之动态的改变. MyBatis 中,提供了一组标签用于实现动态 SQL. 动态SQL语句标 ...
- MyBatis——动态SQL语句——if标签和where标签复合使用
功能需求 根据性别和名字查询用户 官方文档 MyBatis--动态 SQL SQL语句 SELECT id, username, birthday, sex, address FROM `user` ...
- UI标签库专题九:JEECG智能开发平台 Choose(选则操作标签)
1. Choose(选则操作标签) 1.1. 参数 属性名 类型 描述 是否必须 默认值 hiddenName string 隐藏域的ID 否 null hiddenid string 隐藏框i ...
- 【HTML基础-1】HTML标签简介及常用标签
目录 1 HTML概述 1.1 什么是HTML 1.2 HTML的语法规则 2 HTML标签简介 2.1 HTML标签 2.2 HTML元素 2.3 HTML实例 3 HTML常用标签 3.1 标题标 ...
- MyBatis中如何使用insert标签呢?
转自: MyBatis中如何使用insert标签呢? MyBatis insert 标签的功能 MyBatis insert标签的功能,用于定义一个插入语句,执行插入操作, MyBatis运行完 ...
- Unity3D-Tag 标签简介与应用
Unity3D-Tag 标签简介与应用 转载自Unity3D(通过Tag 标签查找物体) 1.Tag 简介 Tag 标签,就是一个标签.标签可以起到标识,区分的作用. 同一类的模型,我们可以根据需要给 ...
- MyBatis中如何使用update标签呢?
转自: MyBatis中如何使用update标签呢? MyBatis update 标签的功能: 用于定义一条更新语句,运行相关的更新操作. 当 MyBatis 执行完一条更新语句后,会返回一个整数, ...
最新文章
- 【排序】几种简单的排序(冒泡、选择、插入)(一)
- java ora 00911_ORA-00911错误
- junit动态忽略测试_有条件忽略测试的JUnit规则
- php金字塔手动输入行数,[菜鸟学php] php版自定义函数实现金字塔
- 8902382_52671.jpg
- goroutine调度详解,以及进程、线程、协程区别
- 【百度地图API】情人节求爱大作战——添加标注功能
- 如何搭建自己的开发环境
- 文字处理技术:布局的核心是行布局,难点是换行算法
- 800道Python习题,花了一个月终于整理出来了,挑战一下自己能做对多少题
- ViewStub用法
- oracle的dbv命令,DBV(DBVERIFY)工具
- linux gst-launch-1.0测试音视频
- 火爆!GitHub 标星 144k 的前后端学习路线,2021 年最新整理,看完后不再迷茫不再徘徊
- 笔记本电脑已连接WIFI密码查看方法
- 用PS把人物皮肤处理的质感又通透
- [软件分享]炬力芯片固件修改工具
- python面向对象编程的思想0727
- C++使用ffmpeg解码v模块,支持cpu解码、amd64平台的cuda解码和NX平台的Nvmpi解码
- MySQL通过binlog数据恢复