MyBatis动态SQL标签1

动态 SQL

MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。

虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种情形。

动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多元素需要花时间了解。MyBatis 3 大大精简了元素种类,现在只需学习原来一半的元素便可。MyBatis 采用功能强大的基于 OGNL 的表达式来淘汰其它大部分元素。

  • if
  • choose (when, otherwise)
  • trim (where, set)
  • foreach

接下来我们就逐一看看,这么标签怎么用:

1.if的用法举例

我们来实现username的模糊查询

① 记得在接口中加@Param注解,以防止以下异常ReflectionException: There is no getter for property named...

②if标签里的test属性里是用的OGNL表达式,这是apache下的一个标签,用法类似jstl,但有些小差别,具体的内容可以在ognl官网上查询,这里强调一点,有些符号在xml文件里写的时候,属于特殊符号,不能直接使用,我们可以在w3cschool里查HTML ISO-8859-1 参考手册,比如:双引号(")

2.where标签的用法举例

我们还来实现模糊查询,不过这次是两个模糊查询的条件,username和password:

上面的做法是我平时最爱干的一种解决办法,但是呢,Mybatis也想到这点,给我们提供了一种解决办法就是where标签,它的特殊作用就是能够去掉执行的sql的第一个条件前的多余的“and”或者“or”这种字符串:

 

注意点:where标签只能去掉第一个条件的前面多余出来的and 或 or ,并不能去掉后面的哈,这一点切记!那么如果我们非要写在后面,这时就只用能trim标签!

3.trim标签的用法举例

如上所说,trim可以解决and在后面的情况:

这个标签,有四个属性:

prefix:加前缀

prefixOverrides:如果发现字符串前有某个前缀,把它干掉

suffix:加后缀

suffixOverrides:发现某个后缀干掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值