if标签:

<if>用法类似Java中的if语句,选择性拼接指定SQL片段.

补充:

  1. 在test条件中使用动态SQL中传递参数要放在实体对象中,不然会报错找不到对象
  2. 如果不放在实体对象中传输,就在test对比中使用_parameter或者value
  3. _parameter,value代表传进来的参数,如果传进来的参数是多个,那个_parameter代表get(0)第一个

格式:

    <if test="条件">SQL片段</if>

说明:

  1. 当条件为true时,将SQL片段拼接到该标签所在位置

<choose>,<when>,<otherwise>

用法类似Java的if else if 语句,用于多次判断,选择性拼接指定SQL片段.
格式:

    <choose><when test="条件1">SQL片段1</when><when test="条件2">SQL片段2</when>...<otherwise>默认SQL片段</otherwise></choose>

说明:

  1. <choose>,<when>,<otherwise>不能单独使用,必须混合使用.
  2. <choose>中可以含有N个<when>,0或1个<otherwise>

<forEach>标签:

用于遍历集合,通常用于构建in语句中.

格式:

    <select id="业务匿名" resultType="结果类型[类全名]" >select 字段列 from 表名 where 字段名 in<foreach collection="集合" item="变量A" index="变量B" open=""     separator="" close="">#{变量A}</foreach></select>

说明:

  1. collection属性值为集合类型的属性名.
  2. item属性值为变量名,名称任意.该变量存放当前元素/键值
  3. index属性值为变量名,名称任意.该变量存放当前元素索引/键名
  4. open,separator,close属性值为符号,表示遍历开始/中间/结束时拼接的符号
    <!--测试<forEach: 测试age为20,21,22,23,24,25--><select id="dynacSQL3" resultType="user" parameterType="java.util.List" >select * from user where age in<foreach collection="list" item="ageval" open="(" separator="," close=")">#{ageval}</foreach></select><!--测试<forEach: 测试age为20,21,22,23,24,25--><select id="dynacSQL3" resultType="user" parameterType="java.util.ArrayList" >select * from user where age in<foreach collection="array" item="ageval" open="(" separator="," close=")">#{ageval}</foreach></select>

where标签:

要求:
    <where>需要与<if>,<choose>,<when>,<otherwise>等配合使用
作用:
    a.当至少有1个子标签的条件为true时,<where>生成1个"where"关键字.
    b.若where后紧挨"AND/OR"时[where  and 条件],<where>自动去除.
格式:

    <where>其他动态SQL标签</where>

说明:
    1.<where>标签中编写<if>,<choose>,<when>,<otherwise>,<forEach>等标签

set标签:

<set>用于修改命令中,能够动态前置"set"关键字,同时可以删除多余的逗号.

格式:

    <update id="业务匿名" resultType="int">update 表名<set>其他动态SQL标签或SQL片段</set></update>

说明:

  1. <set>标签中编写<if>,<choose>,<when>,<otherwise>等标签

<sql>在业务标签外,定义一个SQL片段,在其他业务标签中可以通过<include>引用该SQL片段.
格式:

    <sql id="SQL片段匿名">SQL片段</sql>

说明:

  1. SQL片段内容可以是SQL语句的任何部分.
  2. <sql>标签对之间可以嵌套动态SQL标签,产生更加方便的SQL片段
  3. 当需要引用SQL片段时,编写<include refid="SQL片段匿名">即可引用.

8 MyBatis动态SQL相关推荐

  1. MyBatis动态SQL之 set 和 trim标记的使用示例

    2019独角兽企业重金招聘Python工程师标准>>> 和之前的where一样,set和trim也是智能标记 在之前的user.xml中添加 <update id=" ...

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

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

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

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

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

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

  5. MyBatis动态SQL,写SQL更爽

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

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

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 整理 ...

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

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

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

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

  9. mybatis注解动态sql_超全MyBatis动态SQL详解

    MyBatis 令人喜欢的一大特性就是动态 SQL.在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的.MyBatis 动态 SQL 的出现, 解决了这个麻烦. MyBa ...

  10. Mybatis 动态Sql语句《常用》

    MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉 ...

最新文章

  1. 关于大型网站技术演进的思考(九)--网站静态化处理--总述(1)
  2. C#学习笔记(八)——定义类的成员
  3. jenkins pipeline、用户权限管理、插件下载地址更改、凭证管理、自由风格项目构建、maven项目构建、常用的构建触发器、邮件发送、SonarQube代码审查
  4. NLog日志写文件的一个性能问题
  5. linux设置环境变量_什么是linux环境变量
  6. redis高并发数据错乱_redis总结:1T以上海量数据+10万以上QPS高并发+99.99%高可用...
  7. Hadoop中Writable类
  8. 525 Contiguous Array 连续数组
  9. 水准网测量平差matlab_1K417012场区控制测量
  10. 前端精英你是什么样的呢
  11. android dp转px的公式_dp与px的转换对照表
  12. 十八掌教育_徐培成_Hadoop3.0-01.简介
  13. Matlab画出漂亮的三维散点图
  14. 读书笔记11 《蔡康永的说话之道2》 蔡康永
  15. 联想一体机电源键不亮_联想力压华为拿下6·18 PC“六冠王”,背后有何秘诀?...
  16. 布朗大学计算机专业怎么样,布朗大学的计算机专业如何?
  17. 小米 linux 内核面试,编译适配小米2S的CM Linux内核源代码及问题解决
  18. 翻译网Gengo获1200万美元投资,价值何在
  19. Python 函数 pass
  20. WebSocket + Redis简单快速实现Web网站单设备登录功能

热门文章

  1. 单线程和多线程的区别_谷歌下载东西超慢?开启Chrome多线程下载,下载速度提升10倍+...
  2. 《剑指offer》——03. 数组中重复的数字——HashSet、哈希思想——java实现
  3. 1.2.1 计算机系统的组成(硬件+软件)
  4. mysql5.7.20linux安装,linux下 mysql5.7.20安装(精华)
  5. esp32外部中断_玩转 ESP32 + Arduino (四) 电容按键 霍尔传感器 外部中断 延时 脉冲检测...
  6. python shelve模块_python常用模块之shelve模块
  7. 以计算机为话题写作文,以我的发现为话题作文(通用3篇)
  8. ldap基本dn_2020年,手把手教你如何在CentOS7上一步一步搭建LDAP服务器的最新教程...
  9. 社交牛逼症研发小哥的校招和入职初体验
  10. “云智一体“全场景智能视频技术与应用解析白皮书下载申请