mybatis bind标签

开门见山的说,平时写模糊查询,一直用${name},例如:

1
select from table where name like '%${name}%'

后来知道了,这样写可能会引发sql注入,于是乎,要用到这样一个标签 bind,经过改正上面的sql可以变成

1
2
<bind name="bindeName" value="'%'+name+'%'"/>
SELECT FROM table where name like #{bindeName}

大致就上面这个意思,不要在意一些细节。就相当于在bind标签中的value值中,把需要的字符拼接好,然后用name中的值去代替拼接好的参数。

这个用法同样用于一些防止更换数据库的sql中。例如:

concat标签,在mysql中,可以拼接多个字符,但是如果有一天,你的数据库突然变成了oracle,concat就会报错了,因为它只能接受两个参数。

这个时候,bind同样适用,如下:

开始的时候:

<if test=” userName != null and userName ! = ””>
  and username like concat ( '1',#{userName},'2' )
</if>

可以改成:

<if test=” userName != null and userName !=””> 
  <bind name= " userNameLike ” value = ”'1'+ userName + '2'”/>
  and username like #{userNameLike} 
</if>  
posted @ 2020-10-17 22:16  路要一步一步走  阅读(499)  评论(0编辑  收藏  举报