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 知识!

我们常常听人说,人们因工作过度而垮下来,但是实际上十有八九是因为饱受担忧或焦虑的折磨。 —— 卢伯克.J.
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号