MyBatis标签之动态SQL的bind标签
动态SQL<bind>
之标签
<bind>
标签可以使用OGNL表达式创建一个变量并将其绑定到上下文中。
属性
<bind>
标签的两个属性都是必选项
1、name 为绑定到上下文的变量名
2、value 为 OGNL 表达式
如下代码:
<select id="getTrainOrByNameInfo" resultMap="BaseResultMap">
SELECT ptt.* FROM `pms_train_type` ptt
<where>
<if test="name != null">
ptt.name LIKE CONCAT('%',#{ name},'%')
</if>
</where>
ORDER BY ptt.sort DESC;
</select>
由于不同的数据的,concat函数的用法不一样,MySQL有多个参数,而oracle只有2个参数,这就造成了这个SQL语句在不同的环境中运行可能会出错的原因,为了避免这种错误,就可以使用标签;创建一个 标签的变量后,就可以下面直接使用,使用拼接字符串不仅可 以避免因更换数据库而修改 SQL,也能预防 SQL 注入。
如下代码:
<select id="getTrainOrByNameInfo" resultMap="BaseResultMap">
SELECT ptt.* FROM `pms_train_type` ptt
<where>
<if test="name != null">
<bind name="name" value="'%'+name+'%'"/>
ptt.name LIKE #{ name}
</if>
</where>
ORDER BY ptt.sort DESC;
</select>
还没有评论,来说两句吧...