您的位置:首页 > 数据库

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis sql