转自:

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标签简介说明相关推荐

  1. mybatis choose标签的使用

    有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个.而使用if标签时,只要test中的表达式为 true,就会执行 if 标签中的条件.MyBatis 提供了 choose 元素.if标签是 ...

  2. Mybatis常用的动态SQL标签讲解

    先让我们看看mybatis常用动态SQL的标签有哪一些 如果mybatis和SSM整合环境不会搭建请看这篇 https://blog.csdn.net/weixin_44012722/article/ ...

  3. MyBatis中动态sql语句标签详解

    动态 SQL 通常写在mapper包下面的地址映射配置文件(.xml)中.根据条件的不同, SQL 语句也会随之动态的改变. MyBatis 中,提供了一组标签用于实现动态 SQL. 动态SQL语句标 ...

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

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

  5. UI标签库专题九:JEECG智能开发平台 Choose(选则操作标签)

     1. Choose(选则操作标签) 1.1. 参数 属性名 类型 描述 是否必须 默认值 hiddenName string 隐藏域的ID 否 null hiddenid string 隐藏框i ...

  6. 【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 标题标 ...

  7. MyBatis中如何使用insert标签呢?

    转自: MyBatis中如何使用insert标签呢? MyBatis insert 标签的功能  MyBatis insert标签的功能,用于定义一个插入语句,执行插入操作,   MyBatis运行完 ...

  8. Unity3D-Tag 标签简介与应用

    Unity3D-Tag 标签简介与应用 转载自Unity3D(通过Tag 标签查找物体) 1.Tag 简介 Tag 标签,就是一个标签.标签可以起到标识,区分的作用. 同一类的模型,我们可以根据需要给 ...

  9. MyBatis中如何使用update标签呢?

    转自: MyBatis中如何使用update标签呢? MyBatis update 标签的功能: 用于定义一条更新语句,运行相关的更新操作. 当 MyBatis 执行完一条更新语句后,会返回一个整数, ...

最新文章

  1. 【排序】几种简单的排序(冒泡、选择、插入)(一)
  2. java ora 00911_ORA-00911错误
  3. junit动态忽略测试_有条件忽略测试的JUnit规则
  4. php金字塔手动输入行数,[菜鸟学php] php版自定义函数实现金字塔
  5. 8902382_52671.jpg
  6. goroutine调度详解,以及进程、线程、协程区别
  7. 【百度地图API】情人节求爱大作战——添加标注功能
  8. 如何搭建自己的开发环境
  9. 文字处理技术:布局的核心是行布局,难点是换行算法
  10. 800道Python习题,花了一个月终于整理出来了,挑战一下自己能做对多少题
  11. ViewStub用法
  12. oracle的dbv命令,DBV(DBVERIFY)工具
  13. linux gst-launch-1.0测试音视频
  14. 火爆!GitHub 标星 144k 的前后端学习路线,2021 年最新整理,看完后不再迷茫不再徘徊
  15. 笔记本电脑已连接WIFI密码查看方法
  16. 用PS把人物皮肤处理的质感又通透
  17. [软件分享]炬力芯片固件修改工具
  18. python面向对象编程的思想0727
  19. C++使用ffmpeg解码v模块,支持cpu解码、amd64平台的cuda解码和NX平台的Nvmpi解码
  20. MySQL通过binlog数据恢复

热门文章

  1. win7转win10的神舟笔记本的wlan已关闭的解决
  2. 关于获取VMware软件各个版本的永久激活密钥(附虚拟机挂机再恢复后黑屏的解决方法)...
  3. re管理器修改音量_re管理器如何修改机型
  4. 连载一 --- 来到无限互联的两个月!
  5. mre下的控件实现(一、公共的宏定义)
  6. 锐捷交换机RLDP技术
  7. UI(十)模拟服务器配置
  8. 智能算力的枢纽如何构建?中国云都的淮海智算中心打了个样
  9. 解决chrome浏览器图标缓存问题
  10. 星号塔php,PHP实现星号金字塔代码分享