zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【MyBatis】 动态SQL——模糊查询 LIKE

mybatisSQL 查询 动态 模糊 like
2023-06-13 09:11:44 时间

大家好,又见面了,我是你们的朋友全栈君。

一、like ‘%?%’

SELECT  * 
FROM t_usr 
WHERE  name like '%${name}%'

SQL解析为:SELECT * FROM t_usr WHERE name like ‘%海%’ 传参必须用${}不能用#{},这样写的弊端是不安全,不能防sql注入 有关LIKE使用,请参见:https://blog.csdn.net/wrs120/article/details/7930582

二、CONCAT()拼接%

SELECT  * 
 FROM t_usr  
 WHERE name like CONCAT('%',CONCAT(#{name},'%'))

SQL解析为:SELECT * FROM t_usr WHERE name like CONCAT(‘%’,CONCAT(?,’%’)) 拼接时%必须加引号 有关CONCAT()使用,请参见:https://blog.csdn.net/wrs120/article/details/81148101

三、bind

bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文。OGNL(Object Graph Navigation Language的缩写)是一种强大的表达式语言,更多用法,见:https://blog.csdn.net/isea533/article/details/50061705/

  SELECT  *  
  FROM t_usr 
  WHERE
      <if test="name !=null || name !=''">
          <bind name="usrName" value="'%' + name + '%'"/>
          name like #{usrName}
      </if>

SQL解析为:SELECT * FROM t_usr WHERE name like ?

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140022.html原文链接:https://javaforall.cn