使用集合方式做模糊查询时,结果有违常理!

来源:2-6 JDBC实战---搭建模型层 Ⅳ

ljm620

2015-10-25 13:56

http://img.mukewang.com/562c6de800010b1412070186.jpg




数据库中imooc_goddess表的内容如上图所示,为什么我用下面的java代码片段做模糊查询时,

得到的结果如下图所示呢,这个结果不是有违常理吗?

http://img.mukewang.com/562c6ea40001248e14170261.jpg

//使用集合的方式进行查询
        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());
        }


写回答 关注

2回答

  • chrealcool
    2016-12-11 21:37:18

    因为你没有在前面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装了什么。

  • zhangxianggis
    2015-12-18 10:48:19
    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);


JDBC之 “ 对岸的女孩看过来”

一起领略JDBC的奥秘,为进一步学习集成框架打下良好的基础

99327 学习 · 856 问题

查看课程

相似问题