Mybatis 动态SQL

MyBatis 的一个强大的特性之一通常是它的动态 SQL 能力。 如果你有使用 JDBC 或其他 相似框架的经验,你就明白条件地串联 SQL 字符串在一起是多么 的痛苦,确保不能忘了空格或在列表的最后省略逗号。动态 SQL 可以彻底处理 这种痛苦。 MyBatis 中用于实现动态SQL的元素主要有: If where trim set choose (when, otherwise) foreach If 元素 if 标签可以对传入的条件进行判断 思考:如果上面的这条sql语句中没有默认的 type=1会是什么样子的。 查询条件 对于查询条件个数不确定的情况,可使用元素。如下: SELECT xxx... FROM table t name like #{name} AND age>#{value} 元素会进行判断,如果它包含的标签中有返回值的话,它就插入一个 ‘where’。 此外,如果标签返回的内容是以AND 或OR 开头,它会剔除掉AND或OR。 trim 元素 where 标签,其实用trim 也可以表示,当WHERE后紧随AND或则OR的 时候,就去除AND或者OR。prefix前缀,prefixOverrides覆盖首部指定 内容 Choose 元素 Set 元素可以把最后一个逗号去掉 也可以使用trim实现 • foreach 元素 主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach 元素的属性主要有item,index,collection,open,separator,close。 item 表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于 表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始, separator 表示在每次进行迭代之间以什么符号作为分隔符,close表示以什 么结束,在使用foreach的时候最关键的也是最容易出错的就是collection 属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的。– 如果传入的是单参数且参数类型是一个List的时候,collection属 性值为list– 如果传入的是单参数且参数类型是一个array数组的时候, collection 的属性值为 array 特殊符号处理 在mybatis中的xml文件中,存在一些特殊的符号,比如:、"、&、<> 等,正常书写mybatis会报错,需要对这些符号进行转义。具体转义如下所示: 特殊字符 转义字符 < < > > " " ’ ' & & 除了可以使用上述转义字符外,还可以使用来包裹特殊字符。如 下所示: AND #{id} ]]> 是XML语法。在CDATA内部的所有内容都会被解析器忽略。 但是有个问题那就是 等这些标签都不会被解析,所以 我们只把有特殊字符的语句放在 尽量缩小 的范围。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值