myBatis xml文件SQL编写( if、where、if

您所在的位置:网站首页 sql查询中使用where myBatis xml文件SQL编写( if、where、if

myBatis xml文件SQL编写( if、where、if

2024-07-17 12:33| 来源: 网络整理| 查看: 265

myBatis xml文件SQL编写( if、where、if-else、set 、foreach ) 1. if 标签2. where 标签3. choose, when, otherwise 标签 (if - else if - else )4. set 标签5. foreach 标签 MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种情形。 动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多元素需要花时间了解。MyBatis 3 大大精简了元素种类,现在只需学习原来一半的元素便可。MyBatis 采用功能强大的基于 OGNL 的表达式来淘汰其它大部分元素。

1. if 标签

mapper中编写AQL,使用 标签,可以使你的接口很便捷。

代码如下(示例):

select * from student where name =#{record.name} select * from student where id = #{record.id} and name = #{record.name}

如上面的代码,如果当你的id为空时,name前面的and是没有必要的,运行会抛异常 或者当这两个都为空时,只剩一个空的where,还是会报错,这个时候就需要标签了。

2. where 标签

标签 只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入WHERE子句。而且,若语句的开头为AND或OR, 标签也会将它们去除。 使用 标签,代码将会变得很优美。

代码如下(示例):

select * from student and id = #{record.id} and name = #{record.name} 3. choose, when, otherwise 标签 (if - else if - else )

在myBatis中是不支持 if - else 的,想要是用 if - else 的话,可以使用标签代替。 标签 、 标签、 标签 ,有点像 Java 中的switch语句。

代码如下(示例):

SELECT * FROM student WHERE state = '已入学' AND name like #{record.name} AND remark like #{record.remark } AND status = 1 4. set 标签

代码如下(示例):

update student name = #{record.name}, sex = #{record.sex }, where id = #{record.id}

标签会在成功拼接的条件前加上SET单词且最后一个”,”号会被无视掉,但是有可能需要”,”的地方不能省略”,”否则异常。

5. foreach 标签

foreach标签用于遍历生成单个或多个数据。

代码如下(示例):

select COUNT(*) count from student and id in #{item}

提示:关于mybatis的动态sql,建议查看,官方文档



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3