这是映射文件中的配置:
<select id="selectByName" parameterClass="String" resultClass="Worker">
select
*
from Worker
where name like '%$name$%'
</select>这是DAO层的代码
@Override
public List<Worker> findByLikeName(String name) {
List<Worker> workers = null;
try {
workers = sqlMapper.queryForList("selectAllWorkers",name);
} catch (SQLException e) {
throw new RuntimeException(e);
}
return workers;
}
传递的才是:s;
数据库中有三条记录:zhangsan,lisi,wangwu;
本来预期的参数是2条,可全部都出来了,而且就是参数是任意的也会全部都查出来;

解决方案 »

  1.   

    select
    *
    from Worker
    where name like '%$name$%'这最好用'%#name#%',试试,或者先到数据库里查查是不是3条
      

  2.   

    select
    *
    from Worker
    where name like s
    直接查询什么结果?
      

  3.   

    sql没穿进去值   like 空了  就全出来了
      

  4.   

    select
    *
    from Worker
    where name like #name#workers = sqlMapper.queryForList("selectAllWorkers","%" + name + "%");
      

  5.   

    试试name like '%'||#name#||'%'
      

  6.   

    and ${key} like '%${value}%',你试一试!
      

  7.   

    在后台做个模糊查询的方法,在XML文件里面把参数实体传过去就可以了,必须要和数据库字段一致才可以。
    第二种方式是在XML文件对实体参数非空判断下