MyBatis模糊查询

1、使用${}替换#{}。如: <select id="getUserInfo" resultMap="UserMap" parameterType="hashmap"> SELECT username, password, sex, age FROM users a WHERE a.username LKIE '%${name}%' </select>

下面介绍MyBatis的两种模糊查询(LIKE)方式,分别如下:

1、使用${}替换#{}进行模糊查询。如:

因为使用${}会将传递过来的值直接拼接到SQL语句中。而使用#{}会使用类似于PreparedStatement的方式进行替换,即使用?作为占用符(#{}与${}的区别)。如下:

<select id="getUserInfo" resultMap="UserMap" parameterType="hashmap">  
SELECT username, password, sex, age   
 FROM users a  
 WHERE a.username LKIE '%${name}%'  
</select>

2、用java代码进行字符串拼接进行模糊查询。如:

使用"+"或者StringBuffer等方式直接拼接处模糊查询语句。

java代码:

// String searchText = "%" + name + "%";   
String searchText = new StringBuilder("%").append(name).append("%").toString();  
parameterMap.put("name", searchText);

Mapper文件:

<select id="getUserInfo" resultMap="UserMap" parameterType="hashmap">  
SELECT username, password, sex, age   
 FROM users a
 WHERE a.username LKIE #{name}  
</select>

3. 大小写匹配查询

大小写转换跟数据库相关,因为UPPER方法是数据库相关的。有可能其他数据库不支持这个函数,或者是使用其他函数来支持该功能。因此,这种方式对数据库兼容不是友好。如下:

SELECT * FROM TABLENAME WHERE UPPER(SUBSYSTEM) LIKE '%' || UPPER('jz') || '%'

或者 

SELECT * FROM TABLENAME WHERE LOWER(SUBSYSTEM) LIKE '%' || LOWER('jz') || '%'

点击学习 MyBatis 教程,了解更多的 MyBatis 知识!

人永远是要学习的。死的时候,才是毕业的时候。 —— 萧楚女
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号