MyBatis标签之动态SQL的bind标签

水深无声 2022-03-22 03:13 706阅读 0赞

动态SQL<bind>之标签

<bind>标签可以使用OGNL表达式创建一个变量并将其绑定到上下文中。

属性

<bind> 标签的两个属性都是必选项
1、name 为绑定到上下文的变量名
2、value 为 OGNL 表达式
如下代码:

  1. <select id="getTrainOrByNameInfo" resultMap="BaseResultMap">
  2. SELECT ptt.* FROM `pms_train_type` ptt
  3. <where>
  4. <if test="name != null">
  5. ptt.name LIKE CONCAT('%',#{ name},'%')
  6. </if>
  7. </where>
  8. ORDER BY ptt.sort DESC;
  9. </select>

由于不同的数据的,concat函数的用法不一样,MySQL有多个参数,而oracle只有2个参数,这就造成了这个SQL语句在不同的环境中运行可能会出错的原因,为了避免这种错误,就可以使用标签;创建一个 标签的变量后,就可以下面直接使用,使用拼接字符串不仅可 以避免因更换数据库而修改 SQL,也能预防 SQL 注入。
如下代码:

  1. <select id="getTrainOrByNameInfo" resultMap="BaseResultMap">
  2. SELECT ptt.* FROM `pms_train_type` ptt
  3. <where>
  4. <if test="name != null">
  5. <bind name="name" value="'%'+name+'%'"/>
  6. ptt.name LIKE #{ name}
  7. </if>
  8. </where>
  9. ORDER BY ptt.sort DESC;
  10. </select>

发表评论

表情:
评论列表 (有 0 条评论,706人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MyBatis--动态sqlbind标签

    <bing>标签 在进行模糊查询时,如果使用“$\{\}”拼接字符串,则无法防止 SQL 注入问题。如果使用字符串拼接函数或连接符号,但不同数据库的拼接函数或连接符号不同