mybatis模糊查询sql

今天下午做的一个功能,要用到模糊查询,字段是description,刚开始我的写法用的是sql中的模糊查询语句,

但是这个有问题,只有将字段的全部值传入其中,才能查询,所以不是迷糊查询。

后来经过搜索,发现要加上一个concat字段,要先将字符串拼接后,才能实现模糊查询。

改成这个样子后,模糊查询功能实现。

在我搜索到的博客中海油别的几种写法,但是试验了两个,有一个成功,另外一个没能实现模糊查询,但是目前还不知道错误在哪里。如果有人知道,请赐教。

他的博客地址是:http://blog.sina.com.cn/s/blog_667bef380101f2da.html

我使用的就是他所说的第一种方法:

1. sql中字符串拼接

SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT(‘%‘, #{text}), ‘%‘);

我就是按照此方法实现了功能。

其实还有种方法:像这样写也行:

他的第二种方法:

2. 使用 ${...} 代替 #{...}

SELECT * FROM tableName WHERE name LIKE ‘%${text}%‘;

这个我试过之后,发现并没有实现模糊查询的功能,而且目前也不知道哪里出错了,如果有人知道请指教。

他的第三种方法:

3. 程序中拼接

Java

// String searchText = "%" + text + "%";

String searchText = new StringBuilder("%").append(text).append("%").toString();

parameterMap.put("text", searchText);

SqlMap.xml

SELECT * FROM tableName WHERE name LIKE #{text};

这个方法我没有试过,但是还是记录下来,以后试试

他还有第四种方法

4. 大小写匹配查询

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

或者

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

正确。

http://www.cnblogs.com/dushan/p/4766954.html

时间: 2024-10-11 20:29:41

mybatis模糊查询sql的相关文章

MyBatis模糊查询相关

Mybatis模糊查询的实现不难,如下实例:在UserMapper.xml中根据用户名模糊查询用户: <!-- 模糊查询用户 --> <select id="findSomeUser" resultMap="userResultMap" parameterType="java.lang.String"> SELECT * FROM user WHERE username LIKE CONCAT('%',#{value},'

MyBatis模糊查询like

MyBatis模糊查询like的两种使用方法 初次使用MyBatis持久层框架,进行模糊查询如like时,如果传入的map类型的参数,可以使用${}, 如果传入的不是map类型的参数, 不知道如何处理.经过研究想到了两种方法(我使用的是MySQL数据库), 如where name like concat(concat(‘%’#{name}),’%’)或者where name like “%”#{name}“%“注意:后一种方法”%”是双引号,而不是单引号 where bo.name like c

MyBatis模糊查询异常: &#39;%${}&#39;&#39;读取jdbc属性

'%${}''不能传参,总是固定为root, 后来发现${username}是读取了jdbc里面的属性username,于是将jdbc属性名修改于是成功 MyBatis模糊查询异常: '%${}''读取jdbc属性 原文地址:https://www.cnblogs.com/ltfxy/p/10409883.html

MyBatis模糊查询和多条件查询

MyBatis模糊查询和多条件查询 一.ISmbmsUserDao层 //根据姓名模糊查询 public List<Smbms> getUser(); //多条件查询 public List<Smbms> getLikeUser(@Param("userName") String userName , @Param("userCode") String userCode ); 二.小配置文件 ISmbmsUserDao.xml <!--

Mybatis模糊查询MySQL中记录的的常用三种方法

mybatis的模糊查询功能使用的很广泛,以MySQL数据库为例(不同的数据库,有些可能不支持) 常用的模糊查询有三种方法: 直接使用 % 拼接字符串,如 '%'#{name}'%' 或 "%"#{name}"%",单引号或双引号都可以. 使用concat(str1,str2)函数拼接 使用mybatis的bind标签 现在有数据库mybatis1中表users中有如下记录: User [id=2, name=bb, phone=13422222222, [emai

Oracle数据库,忽略大小写Like模糊查询(SQL Server,MySql原理相同)

背景 在使用Oracle或者其它数据库时,使用like 关键字进行模糊查询是大家经常使用的功能,在纯中文环境中使用非常好用,还有一些通配符可以使用,但是在纯英文环境中,会出现大小需要精确匹配的问题,主要原因还是字符串的问题 FL like '%{0}%' and 这里like后是一个字符串,这样必然会有大小敏感的问题.比如如下的大小混编的字段 解决方案 方案1 使用Oracle系统函数对需要查询的列字符串进行小写转换(大写也行,变量相关部分都是大写转换),如下所示: select * from

mybatis 模糊查询特殊字符的处理

/** * 把模糊查询的检索的关键字对特殊字符进行转换如"["."%" * @param str * 需要转换的字符串 * @return 返回模糊查询的字符串 */ public static String ToLikeStr(String str) { if(str != null && str.length()>0) { str =str.trim().replace("\\", "\\\\%").

mybatis模糊查询(转载)

原文地址:http://blog.csdn.net/luqin1988/article/details/7865643 模糊查询: 工作中用到,写三种用法吧,第四种为大小写匹配查询 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%'); 2. 使用 ${...} 代替 #{...} SELECT * FROM tableName WHERE name LIKE '%${text

mybatis 模糊查询 like的三种方式

第一种 public void selectBykeyWord(String keyword) { String id = "%" + keyword + "%"; String roleType = "%" + keyword + "%"; String roleName = "%" + keyword + "%"; userDao.selectBykeyWord(id,roleNam