6.Mybatis中的动态Sql和Sql片段(Mybatis的一个核心)
视频地址: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的一个核心)相关推荐
- Mybatis中的动态SQL,一对一,一对多以及标签
文章目录 动态SQL中的结果集映射 一对一 一对多 where标签 where..if...标签(作用和Java中的if一样,只要满足if条件的都可以拼接) where..choose..标签(作用和 ...
- Java - MyBatis中的动态SQL是什么意思?
分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 对于一些复杂的查询,我们可能会指定多个查询条件,但是 ...
- Mybatis 中update动态SQL语句
Mybatis中的CRUD操作(增删改查)中,简单的SQL操作比较直观,如查找操作: <select id="findBySrcId" resultMap="ent ...
- Mybatis中Mapper动态代理方式
文章目录 开发规范 Mapper接口开发需要遵循以下规范 Mapper.xml(映射文件) UserMapper(接口文件) 加载UserMapper.xml文件 总结 selectOne和selec ...
- mybatis中实现动态SQL
动态SQL语句,也就意味着SQL语句不在是一成不变的而是具有多样性. if if的用法还是跟平常差不多的(不过没有else if也没有else) <update id="modify& ...
- mybatis中的动态sql
if标签 parameterType类型是pojo test中的属性必须是pojo中的属性并且严格区分大小写(sql语句中不区分大小写) 使用NGNL语言进行查询 标准的判断非空形式为<if t ...
- MyBatis 中的动态 SQL 特性
动态SQL 定义:SQL语句执行时,会根据传入的参数的个数及参数的内容而发生变化. 上代码: application.properties #MySQL数据源 spring.datasource.ur ...
- Mybatis中的动态SQL记录
if判断 <mapper namespace="cn.wideth.mapper.CarMapper"><select id="selectByCarI ...
- java用tkmapper分组查询_tk.mybatis 中的通用Mapper自定义SQL语句
前言 今天就是想写点什么,其实还有很多没写的东西呢!笔记里边好多东西都挺好的,经验加实践总结出来的.就是都没有系统的整理,至于原因吧,有很多,最重要的一点就是我有点懒.今天写个最简单的东西,现在的开发 ...
最新文章
- Mysql:命令选项、配置选项、(全局、会话)系统变量、状态变量:命令选项...
- 是否可能有一台算力无穷大的计算机?
- Android Studio中有没有类似于Eclipse中的ctrl+2+L的快捷键? \Android Studio快捷键之代码提示...
- elementUi、iview、ant Design源码button结构篇
- jQuery学习笔记系列(二)
- lrzsz linux 安装目录,Linux下lrzsz软件的安装与使用
- C语言tolower函数介绍、示例和实现
- python热力图美化_python如何画热力图?
- sharelatex在centos 6.7 64位上的部署(2)
- postman“在Tests中通过data.token获取token失败”的解决方法
- Java小例子—薪水计算器(含具体的代码思路)
- (休息几天)读米什金之货币银行学——金融市场工具
- [转载]STED和STORM、PALM
- 导航地图2_自定义标注
- stm32f407 休眠模式_STM32进入和退出睡眠模式
- WT588F02B-8S(芯片代码C001_01)语音芯片在化妆品/保健品/食品行业保质期和使用期得应用解决方案
- js 超简单 判断是否字符串是否为纯数字
- 非易失性存储器Flash和EEPROM之间的差异与优缺点
- hgame2023 WebMisc
- 校园网自动登陆(河南科技学院)