mybatis动态sql,常用元素介绍

  • if元素
  • choose、when、otherwise
  • foreach元素
  • bing元素

if元素

<select id="findRole1" parameterType="string" resultMap="roleResultMap">select role_no, role_name, note from t_role where 1=1<if test="roleName != null and roleName !=''">and role_name like concat('%', #{roleName}, '%')</if>
</select>

当参数“roleName”参数不为空的时候,就执行对“roleName”的模糊查询的操作。这个是经常用到的标签,需要重点掌握

choose、when、otherwise

<select id="findRole2" parameterType="role" resultMap="roleResultMap">select role_no, role_name, note from t_rolewhere 1=1<choose><when test="roleNo != null and roleNo !=''">AND role_no = #{roleNo}</when><when test="roleName != null and roleName !=''">AND role_name like concat('%', #{roleName}, '%')</when><otherwise>AND note is not null</otherwise></choose>
</select>

choose、when、otherwise相当于java代码中的switch、case、default功能的语句,也是比较常用的标签,需要重点掌握。

foreach元素

<select id="findRoleByNums" resultMap="roleResultMap">select role_no, role_name, note from t_role where role_no in<foreach item="roleNo" index="index" collection="roleNoList"open="(" separator="," close=")">#{roleNo}</foreach>
</select>

foreach 元素是一个循环语句,他的作用是编译集合,往往作用与SQL中的in关键字。

  • collection:配置的是传过来的参数名称,他可以是一个数组或者集合
  • open、close:是表示用什么符号将这些集合元素包装起来
  • separator:用什么符号间隔起来
  • index:这个就比较明显了,数据数据的下标
  • item:配置的是循环当中的元素
    使用foreach时,如果作用于in关键字,需要考虑SQL语句的长度,因为有的数据库对SQL语句的长度是有限制的

bing元素

<select id="findRole" parameterType="string" resultMap="roleResultMap"><bind name="pattern" value="'%'+_parameter+'%'"></bind>select role_no, role_name, note from t_role where role_name like #{pattern}
</select>

bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文,这样更方便使用。在进行模糊查询的时候,我们mysql数据库,常常用到的是concat来连接数据库:concat(’%’,name,’%’),而oracle这是用“||”来连接,但是我们用bind来定义一个变量,就不用管数据库语言了,兼容性更强。

mybatis动态sql,常用元素介绍相关推荐

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

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

  2. 后端技术:MyBatis动态SQL写法介绍

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

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

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

  4. 3 MyBatis动态SQL

    MyBatis动态SQL 文章目录 MyBatis动态SQL 1.动态SQL简介 1.if标签 2.where标签 3.choose标签(类似switch) 4.foreach标签(处理遍历数据) 1 ...

  5. MyBatis Dynamic SQL(一)— 真正的Mybatis动态sql — MyBatis Dynamic SQL

    目录 现状 MyBatis Dynamic SQL 项目地址 官方文档 项目介绍 作者 Mybatis Generator 简介 特性 目标 提示 快速使用 步骤 定义常量Tables和Columns ...

  6. 详解mybatis动态SQL

    什么是动态SQL? 动态 SQL 是 MyBatis 的强大特性之一.顾名思义,就是会动的SQL,即是能够灵活的根据某种条件拼接出完整的SQL语句.这种类似于MySQL中的 case when the ...

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

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

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

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

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

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

最新文章

  1. 初学Python——文件操作第三篇
  2. IP地址不够了,有办法吗?
  3. html dom节点源码,JavaScript操作HTML DOM节点的基础教程
  4. AVL树的旋转与插入(C语言)
  5. smarty基本语法之判断,循环语句
  6. 二叉查找树的类模板实现
  7. laravel框架学习之路(一)前后台用户认证分离
  8. 关于solidworks+workbench的参数化建模分析的一点心得1
  9. 2022年起重机械指挥考试题及模拟考试
  10. 盼望着,盼望着,东风来了,春天的脚步近了。
  11. 男生vs女生,谁更加适合做软件测试?
  12. 创建Android工程心德,Android项目的个人总结
  13. mysql实现:随机从(341102,341103,341122,341124,341125,341126)里返回任何一个
  14. 免费!百度权重数据接口 根据网址查询百度权重
  15. 通过cv2输出左右眼视差图, 然后根据视差图输出深度边沿
  16. 韭菜投资ABC:买下整个A股或者美股的收益有多少?
  17. 大数据学习需要哪些课程?
  18. python中pyshp_Python使用pyshp库读取shapefile信息的方法
  19. 无锡c语言培训,无锡c语言培训,C语言程序设计小结
  20. kaldi在linux上编译,Ubuntu 12.04下编译安装Kaldi

热门文章

  1. 雇主责任险如何投保?费率如何计算?
  2. 哪个牌子的电视盒子好用?数码博主总结热销电视盒子推荐
  3. 八个python免费自学网站一周熟练python(抓紧收藏)
  4. Postman报错Unsupported Media Type
  5. CSDN编程挑战赛第六期参赛心得
  6. python为什么不火_python web为什么不火
  7. 多场景业务实战-游戏数据分析
  8. 香农公式说明了什么_香农公式意义
  9. 华为高级技术专家多年经验分享微服务治理体系、架构及实践文档
  10. 详解gitignore的使用方法,让你尽情使用git add .