mybatis动态sql中的where标签的使用
From: https://blog.csdn.net/wobuaizhi/article/details/81874664
在使用mybatis的动态sql时,有时候遇到根据条件判断添加where后面的筛选条件。
会出现多余的“and”或者“or”,如下:
<select id="findBlog"
resultType="Blog">
SELECT * FROM BLOG
WHERE
<if test="state != null">
state = #{state}
</if>
<if test="title != null">
AND title like #{title}
</if>
</select>
如果第一个参数“state”为空,那么sql会变成下面这样,
select * from blog where and title like
如果两个if都为空,那么输出为,
select * from blog where
显然这样的sql执行时,会发生错误。
这时候使用where标签就可以解决这个问题,
<select id="findBlog"
resultType="Blog">
SELECT * FROM BLOG
<where>
<if test="state != null">
state = #{state}
</if>
<if test="title != null">
AND title like #{title}
</if>
</where>
</select>
where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句。而且,若语句的开头为“AND”或“OR”,where 元素也会将它们去除。
当然我们也可以用“trim”标签来处理。
<trim prefix="WHERE" prefixOverrides="AND |OR ">
...
</trim>
prefix:前缀, prefixoverride:去掉第一个“and”或者是“or”
“trim”标签还有其他属性,
suffixoverride:去掉最后标记的字符(就像是上面的and一样)
suffix:后缀
参考文献:http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html
mybatis动态sql中的where标签的使用相关推荐
- mybatis动态sql中的trim标签的使用
trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码: 1. select * from user <trim prefix="WHERE" p ...
- Mybatis动态sql中的foreach标签的使用
foreach 标签一般用于遍历集合,构建in条件语句或者批量操作语句 <insert id="batchSave" parameterType="java.uti ...
- mybatis动态sql中where标签的使用
where标记的作用类似于动态sql中的set标记,他的作用主要是用来简化sql语句中where条件判断的书写的,如下所示: <select id="selectByParams&qu ...
- Mybatis 动态sql语句(if标签和where标签)
功能:根据性别和名字查询用户 查询sql语句: SELECT id, username, birthday, sex, address FROM `user` WHERE sex = 1 AND us ...
- mybatis动态sql中的if、where、choose、trim、foreach方法
mybatis笔记03 1.动态sql语句–>sql拼接 1.1 if方法 相当于el表达式中的if(){}语句 参数类型不同,if标签中test的参数是怎么说明的呢? 1)如果参数的类型是数字 ...
- 使用动态SQL中的if标签做条件判断的几种用法和注意点
使用中踩到的坑记录一下(大神请略过,我只是个菜菜,忽喷!!!万分感谢!!!) <mapper namespace="dynamic"><resultMap id= ...
- 详解mybatis动态SQL
什么是动态SQL? 动态 SQL 是 MyBatis 的强大特性之一.顾名思义,就是会动的SQL,即是能够灵活的根据某种条件拼接出完整的SQL语句.这种类似于MySQL中的 case when the ...
- MyBatis——动态SQL语句——if标签和where标签复合使用
功能需求 根据性别和名字查询用户 官方文档 MyBatis--动态 SQL SQL语句 SELECT id, username, birthday, sex, address FROM `user` ...
- mybatis动态SQL多条件查询1 - if 标签
Mybatis框架的动态SQL技术是一种根据特定条件动态拼接SQL语句的过程.它的存在是为了解决拼接SQL语句字符串的痛点问题.创建新的Mapper接口和新的mapper映射文件. 目录 1.创建Dy ...
最新文章
- Spring 容器的启动过程
- How to make app start automatically When the application starts
- 4g模块注册上网 移远_Openwrt实现4G模块上网功能
- python3 安装opencv_Page20-opencv的编译与安装
- cygwin安装skyeye 所需的软件包列表
- STL sector 应用
- 修复Bug大幅升级 Sun发布MySQL 5.1版
- 将Matlab换成Pycharm风格
- 弹性力学经典解法与有限元法的不同特点
- php电子面单打印快递100,使用快递100软件打印电子面单设置操作教程
- 机器学习 特征选择(过滤法 封装法 嵌入法)
- 关于铁路订票系统如何改善设计的讨论
- 【Nodejs】使用request批量下载MP3,文件数量内容都没问题
- 面对对象原则:高内聚、低耦合
- python discuz_[Python代码]Discuz!论坛(X2.5)发帖及回复脚本
- Three.js入门——画星空(star field)
- 迭代扩展卡尔曼滤波学习
- 【解决】ERROR Failed to compile with 1 error;error in ./node_modules/pdfjs-dist/build/pdf.js
- Redis删除过期数据的策略概要
- ”你谁啊?“ ”我CPU啊,你刚才还看我呢。“