视频地址:http://edu.51cto.com/sd/be679

动态Sql是Mybatis的核心,就是对我们的sql语句进行灵活的操作,他可以通过表达式,对sql语句进行判断,然后对其进行灵活的拼接和组装。可以简单的说成Mybatis中可以动态去的判断需不需要某些东西。

  动态Sql主要有以下类型:

    if

    choose,when,otherwise

    trim,where,set

    foreach

  这里主要介绍几个常见的where  if  foreach,直接贴代码了

    1.where 这里的where有一个好处就是在拼接成功的时候,会自动去掉第一个and

    2.if 这里的if和java基础中的if用法是一样,在这里的用法就是当条件成立的时候,就会把sql语句拼接上去,不成立的时候就会把if里面的sql语句忽略

    3.if可以重复并且嵌套使用

    4.这里的student.name是包装类的写法

  foreach的用法:把sid在4,5,6,7中的学生找出来 SELECT * FROM t_student WHERE sid in (4,5,6,7);

<!-- 测试foreach代码 -->
<sql id="forEache"><if test="sid_s!=null"><!-- collection:指定你输入的集合的属性item:每次遍历的对象名(别名)open:开始遍历的时候拼接的字符串close:结束遍历的时候要拼接的字符串separator:遍历的对象中间要拼接的字符串SELECT * FROM t_student WHERE sid in (4,5,6,7);--><foreach collection="sid_s" item="sid" open="and sid in (" close=")" separator=",">#{sid}</foreach></if>
</sql>

  Sql片段:(提高配置文件中Sql代码的重用性)

    Sql片段的写法:

<!-- id:这个是唯一标识sql代码片段经验 :    基于单表写的sql代码重用性比较高】:    就是在sql代码里不要出现where-->
<sql id="query_list"><if test="student!=null and student!=''"><if test="student.name!=null and student.name!=''">and name=#{student.name}</if><if test="student.sex!=null and student.sex!=''">and sex=#{student.sex}</if> </if>
</sql>

    Sql片段的引用:(可以引用其他配置文件的sql片段:命名空间.sql片段的Id)

<!-- 拼接成功的时候,这个where会自动去掉第一个 and --><where><include refid="query_list"></include>    </where>

转载于:https://www.cnblogs.com/huaixiaoz/p/5795836.html

6.Mybatis中的动态Sql和Sql片段(Mybatis的一个核心)相关推荐

  1. Mybatis中的动态SQL,一对一,一对多以及标签

    文章目录 动态SQL中的结果集映射 一对一 一对多 where标签 where..if...标签(作用和Java中的if一样,只要满足if条件的都可以拼接) where..choose..标签(作用和 ...

  2. Java - MyBatis中的动态SQL是什么意思?

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 对于一些复杂的查询,我们可能会指定多个查询条件,但是 ...

  3. Mybatis 中update动态SQL语句

    Mybatis中的CRUD操作(增删改查)中,简单的SQL操作比较直观,如查找操作: <select id="findBySrcId" resultMap="ent ...

  4. Mybatis中Mapper动态代理方式

    文章目录 开发规范 Mapper接口开发需要遵循以下规范 Mapper.xml(映射文件) UserMapper(接口文件) 加载UserMapper.xml文件 总结 selectOne和selec ...

  5. mybatis中实现动态SQL

    动态SQL语句,也就意味着SQL语句不在是一成不变的而是具有多样性. if if的用法还是跟平常差不多的(不过没有else if也没有else) <update id="modify& ...

  6. mybatis中的动态sql

    if标签 parameterType类型是pojo test中的属性必须是pojo中的属性并且严格区分大小写(sql语句中不区分大小写) 使用NGNL语言进行查询 标准的判断非空形式为<if t ...

  7. MyBatis 中的动态 SQL 特性

    动态SQL 定义:SQL语句执行时,会根据传入的参数的个数及参数的内容而发生变化. 上代码: application.properties #MySQL数据源 spring.datasource.ur ...

  8. Mybatis中的动态SQL记录

    if判断 <mapper namespace="cn.wideth.mapper.CarMapper"><select id="selectByCarI ...

  9. java用tkmapper分组查询_tk.mybatis 中的通用Mapper自定义SQL语句

    前言 今天就是想写点什么,其实还有很多没写的东西呢!笔记里边好多东西都挺好的,经验加实践总结出来的.就是都没有系统的整理,至于原因吧,有很多,最重要的一点就是我有点懒.今天写个最简单的东西,现在的开发 ...

最新文章

  1. Mysql:命令选项、配置选项、(全局、会话)系统变量、状态变量:命令选项...
  2. 是否可能有一台算力无穷大的计算机?
  3. Android Studio中有没有类似于Eclipse中的ctrl+2+L的快捷键? \Android Studio快捷键之代码提示...
  4. elementUi、iview、ant Design源码button结构篇
  5. jQuery学习笔记系列(二)
  6. lrzsz linux 安装目录,Linux下lrzsz软件的安装与使用
  7. C语言tolower函数介绍、示例和实现
  8. python热力图美化_python如何画热力图?
  9. sharelatex在centos 6.7 64位上的部署(2)
  10. postman“在Tests中通过data.token获取token失败”的解决方法
  11. Java小例子—薪水计算器(含具体的代码思路)
  12. (休息几天)读米什金之货币银行学——金融市场工具
  13. [转载]STED和STORM、PALM
  14. 导航地图2_自定义标注
  15. stm32f407 休眠模式_STM32进入和退出睡眠模式
  16. WT588F02B-8S(芯片代码C001_01)语音芯片在化妆品/保健品/食品行业保质期和使用期得应用解决方案
  17. js 超简单 判断是否字符串是否为纯数字
  18. 非易失性存储器Flash和EEPROM之间的差异与优缺点
  19. hgame2023 WebMisc
  20. 校园网自动登陆(河南科技学院)

热门文章

  1. 深度解析JAVA动态代理设计模式
  2. Visual Studio中11个强大的调试技巧和方法
  3. easyNeurons 神经网络入门教程
  4. golang中的对称加密
  5. golang计算单个协程占用内存
  6. 如何屏蔽VS2013中的4996错误!
  7. mbstowcs 和 wcstombs函数:C语言提供的宽字符和多字节字符转换函数
  8. linux网络编程二:基础socket, bind, listen, accept, connect
  9. python三十九:logging模块
  10. C五:typedef, define