
数据库中imooc_goddess表的内容如上图所示,为什么我用下面的java代码片段做模糊查询时,
得到的结果如下图所示呢,这个结果不是有违常理吗?

//使用集合的方式进行查询
System.out.println("使用集合的方式进行查询:");
List<Map<String, Object>> params = new ArrayList<Map<String,Object>>();
Map<String, Object> param = new HashMap<String, Object>();
param.put("name", "user_name");
param.put("rela", "like");
param.put("value", "'%小美%'");
params.add(param);
param.put("name", "mobile");
param.put("rela", "like");
param.put("value", "'%187%'");
params.add(param);
List<Goddess> result = g.getGoddess(params);
for(int i = 0; i < result.size(); i++)
{
System.out.println(result.get(i).toString());
}因为你没有在前面params.add(param);后重新new一个参数列表,导致你
param.put("name", "mobile");
param.put("rela", "like");
param.put("value", "'%187%'");
的这些覆盖了前面的
param.put("name", "user_name");
param.put("rela", "like");
param.put("value", "'%小美%'");
查询条件,于是你的查询条件变成了是“where 1=1 and mobile like %187% “,你可以遍历下你的params 表就知道你的params装了什么。
Map<String, Object> param = new HashMap<String, Object>();
param.put("name", "user_name");
param.put("rela", "like");
param.put("value", "'%小美%'");
params.add(param);
//新增条件时要重新new 一个参数列表
param = new HashMap<String, Object>();
param.put("name", "mobile");
param.put("rela", "like");
param.put("value", "'%187%'");
params.add(param);