您的位置:首页 > 其它

MyBatis下动态语句使用like进行模糊查询

2016-02-24 01:19 716 查看

运用场景

在MyBatis的 xml 文件中的动态语句中使用 like 关键字,进行模糊查询

使用注意

区分 MyBatis 下#{参数},${参数}两者解析参数的不同

<!--
#{参数}是将参数解析成字符串,
代码中userName是Operation的字段,假设设置userName= "Smith",
解析成SQL:
select * from h_saller_operation o where o.t_op_username= "Smith"
-->
<select id="qryOperatonInfo" parameterType="com.palmshe.bean.Operation">
select * from h_saller_operation o
where o.t_op_username = #{userName}
</select>
<!--
${参数}是将参数解析字符代码,
代码中userName是Operation的字段,假设设置userName= "Smith",
解析成SQL:
select * from h_saller_operation o where o.t_op_username like '%Smith%'
-->
<select id="qryOperatonInfo" parameterType="com.palmshe.bean.Operation">
select * from h_saller_operation o
where o.t_op_username like '%${userName}%'
</select>


#{参数}能有效防止 SQL 注入,${参数}会有注入风险

Oracle常用模糊查询

<!-- %匹配0个或者多个字符 -->
select * from h_saller_operation o where o.t_op_username like '%李雷%'
<!-- _匹配一个字符 -->
select * from h_saller_operation o where o.t_op_username like '_李雷_'
<!-- 正则模糊查询-->
select * from h_saller_operation o
where regexp_like( o.t_op_code, '1[0-9]{4}60')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: