数据库中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);