MyBatis模糊查询的三种拼接方式
2013-11-22 01:11
435 查看
1. sql中字符串拼接
SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%');
2. 使用 ${...} 代替 #{...}
SELECT * FROM tableName WHERE name LIKE '%${text}%';
${}解析过来的参数值不带单引号,#{}解析传过来参数带单引号。
3. 程序中拼接
Java
// or String searchText = "%" + text + "%";
String searchText = new StringBuilder("%").append(text).append("%").toString();
parameterMap.put("text", searchText);
SqlMap.xml
SELECT * FROM tableName WHERE name LIKE #{text};
异常:
java.lang.IllegalArgumentException: modify is ambiguous in Mapped Statements collection (try using the full name including the namespace, or rename one of the entries)
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:466)
at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:349)
at org.apache.ibatis.binding.MapperMethod.setupCommandType(MapperMethod.java:137)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:46)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:34)
at $Proxy10.modify(Unknown Source)
抛出这个异常的原因可能是因为mapper.xml配置文件中<mapper>的namespace属性配置错误造成的,没有根据命名空间的值(全称类名)找到相应映射接口。
如:<mapper namespace="com.xxx.xxx.mapper.TestMapper" >
作者原文:http://blog.csdn.net/returnme/article/details/7185411
SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%');
2. 使用 ${...} 代替 #{...}
SELECT * FROM tableName WHERE name LIKE '%${text}%';
${}解析过来的参数值不带单引号,#{}解析传过来参数带单引号。
3. 程序中拼接
Java
// or String searchText = "%" + text + "%";
String searchText = new StringBuilder("%").append(text).append("%").toString();
parameterMap.put("text", searchText);
SqlMap.xml
SELECT * FROM tableName WHERE name LIKE #{text};
异常:
java.lang.IllegalArgumentException: modify is ambiguous in Mapped Statements collection (try using the full name including the namespace, or rename one of the entries)
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:466)
at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:349)
at org.apache.ibatis.binding.MapperMethod.setupCommandType(MapperMethod.java:137)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:46)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:34)
at $Proxy10.modify(Unknown Source)
抛出这个异常的原因可能是因为mapper.xml配置文件中<mapper>的namespace属性配置错误造成的,没有根据命名空间的值(全称类名)找到相应映射接口。
如:<mapper namespace="com.xxx.xxx.mapper.TestMapper" >
作者原文:http://blog.csdn.net/returnme/article/details/7185411
相关文章推荐
- [MyBatis]模糊查询LIKE的三种方式
- MyBatis学习笔记-06.MyBatis实现模糊查询的三种方式以及在MyBatis中#{}和${}的区别
- MyBatis模糊查询的三种方式
- mybatis中写模糊查询三种方式
- MyBatis模糊查询的两种拼接方式
- Spring+Mybatis 三种查询映射方式
- mybatis 模糊查询使用 like 的三种方法
- android sqlite使用之模糊查询数据库数据的三种方式
- MongoDB 模糊查询的三种实现方式-morphia实现
- MyBatis实现模糊查询的几种方式
- 基于Mapper代理配置的Mybatis多表查询一对一的三种方式
- (4).Mybatis模糊查询MySQL中记录的的常用三种方法
- Hibernate模糊查询三种方式
- Mybatis模糊查询的两种实现方式
- mybatis 模糊查询与函数连用%需不需要拼接问题
- mybatis查询主要有三种方式实现
- android sqlite使用之模糊查询数据库数据的三种方式
- android sqlite使用之模糊查询数据库数据的三种方式
- MyBatis实现模糊查询的几种方式
- Mybatis 中 模糊查询的几种方式