MyBatis中if,where,set标签
<if>标签
<select id="findActiveBlogWithTitleLike"resultType="Blog">SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null">AND title like #{title}</if> </select>
if标签通常伴随着where,set出现。当增加查询条件的时候有下面的代码
<select id="findActiveBlogLike"resultType="Blog">SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null">AND title like #{title}</if><if test="author != null and author.name != null">AND author_name like #{author.name}</if> </select>
但是当state属性也需要动态表示的时候则变成
<select id="findActiveBlogLike"resultType="Blog">SELECT * FROM BLOG WHERE <if test="state != null">state = #{state}</if> <if test="title != null">AND title like #{title}</if><if test="author != null and author.name != null">AND author_name like #{author.name}</if> </select>
此时会出现当state为null时,sql语句会变为 select * from BLOG WHERE AND...解决此问题则引入<where><set>等标签.
<where>标签
<select id="findActiveBlogLike"resultType="Blog">SELECT * FROM BLOG <where> <if test="state != null">state = #{state}</if> <if test="title != null">AND title like #{title}</if><if test="author != null and author.name != null">AND author_name like #{author.name}</if></where> </select>
where 元素知道只有在一个以上的if条件有值的情况下才去插入“WHERE”子句。而且,若最后的内容是“AND”或“OR”开头的,where 元素也知道如何将他们去除。
如果 where 元素没有按正常套路出牌,我们还是可以通过自定义 trim 元素来定制我们想要的功能。比如,和 where 元素等价的自定义 trim 元素为:
<trim prefix="WHERE" prefixOverrides="AND |OR ">... </trim>
同理当需要更新数据时使用<set>标签
<update id="updateAuthorIfNecessary">update Author<set><if test="username != null">username=#{username},</if><if test="password != null">password=#{password},</if><if test="email != null">email=#{email},</if><if test="bio != null">bio=#{bio}</if></set>where id=#{id} </update>
转载于:https://www.cnblogs.com/dyc940210/p/7371672.html
MyBatis中if,where,set标签相关推荐
- MyBatis中如何使用insert标签呢?
转自: MyBatis中如何使用insert标签呢? MyBatis insert 标签的功能 MyBatis insert标签的功能,用于定义一个插入语句,执行插入操作, MyBatis运行完 ...
- MyBatis中如何使用update标签呢?
转自: MyBatis中如何使用update标签呢? MyBatis update 标签的功能: 用于定义一条更新语句,运行相关的更新操作. 当 MyBatis 执行完一条更新语句后,会返回一个整数, ...
- MyBatis中动态sql语句标签详解
动态 SQL 通常写在mapper包下面的地址映射配置文件(.xml)中.根据条件的不同, SQL 语句也会随之动态的改变. MyBatis 中,提供了一组标签用于实现动态 SQL. 动态SQL语句标 ...
- main方法 如何去掉http debug日志_在MyBatis中如何使用collection标签实现嵌套查询?...
# 需求升级 在上篇博客<一对多的关系,在MyBatis中如何映射?>中,我们实现了需求:根据用户id查询用户信息的同时获取用户拥有的角色. 因为角色可以拥有多个权限,所以本篇博客我们升级 ...
- 【每日学习Mybatis中基础】trim标签使用
2019独角兽企业重金招聘Python工程师标准>>> 1.trim基础 trim标签的四个属性 prefix(前缀),prefixOverrides(去掉第一个and或者是or), ...
- mybatis中<choose>标签的用法
choose 标签是按顺序判断其内部 when 标签中的 test 条件出否成立,如果有一个成立,则 choose 结束.当 choose 中所有 when 的条件都不满则时,则执行 otherwis ...
- Mybatis中<trim>标签用法
trim标签的属性: prefix: 拼接sql需要加上的前缀. prefixOverrides:前缀需要覆盖消除的内容. suffix:拼接sql需要加上的后缀 suffixOverrides:后缀 ...
- mybatis collection标签_一对多的关系,在MyBatis中如何映射?
# 使用collection标签 需求:根据用户id查询用户信息的同时获取用户拥有的角色,一个用户可以拥有1个或多个角色. 一般情况下,不建议直接修改数据库表对应的实体类. 所以这里我们延用之前博客中 ...
- Mybatis中Collection集合标签的使用
mybatis简单的CURD就不用多说了,网上相关博客文档一大堆.分析一下Mybatis里面的collection聚集查询. 假设一个班级有多名学生为例,通过班级号查询出该班级的信息,和班级里面的所 ...
- mybatis中where标签和trim标签的区别以及使用
mybatis中where和trim的区别以及使用 1.多个查询条件 2.where标签的使用 3.trim标签的使用 4.trim扩展 1.多个查询条件 在多个查询条件下,由于需要拼接sql语句,所 ...
最新文章
- 机器学习笔记 :LSTM 变体 (conv-LSTM、Peephole LSTM、 coupled LSTM、conv-GRU)
- MONO Design创建电信3D机房
- docker实现宿主机和容器之间数据共享
- 自适应 幻灯片代码 app_字节跳动 To B 再添一员,将推出飞书文档独立App | 36氪独家...
- html 边框轮廓,CSS半圈(边框,仅轮廓)
- less与SASS学习心得
- TCP连接建立与释放
- 微型 ORM-FluentData 实例详解
- 小腿抽筋了,按摩承山穴,外加念观世音菩萨是不是迷信
- python余弦定理求角_余弦定理计算文章相似度
- Kaldi语音识别:基于aidatatang模型实现自制语音数据的识别
- echarts如何在柱状图上显示百分比
- 郑捷《机器学习算法原理与编程实践》学习笔记(第三章 决策树的发展)(三)_Scikit-learn与回归树...
- 和数传媒:人工智能和区块链可能是典型应用
- win10远程桌面连接凭据怎么设置_win10远程桌面怎么保存密码?win10让远程桌面记住密码的方法...
- 迭代最近点(Iterative Closest Point, ICP)算法
- s3cmd 快速评估RADOSGW的性能
- android文件目录
- 有哪些小巧舒适的蓝牙耳机?推荐几款小巧且舒适的蓝牙耳机
- Sql处理数字保留两位小数,而且四舍五入。
热门文章
- cdb内存 oracle,【CDB】怎样修改PDB的内存参数
- linux音量模块,Linux下的音量控制器alsamixer
- mysql group 分页_【MySQL】条件查询之排序聚合分组分页查询
- 我是机器人布里茨_9.19机器人钩子范围增加,这些位置阴人无敌,一Q一个小朋友...
- java将图片变成圆角_android图片处理之让图片变成圆形
- 『设计模式』难道你现在还不知道:C/S和B/S
- Python函数式编程简介(二)返回函数
- 迁移学习 nlp_NLP的发展-第3部分-使用ULMFit进行迁移学习
- 使用Java解决您的数据科学问题
- alexnet 结构_AlexNet的体系结构和实现