为了账号安全,请及时绑定邮箱和手机立即绑定

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

http://img1.sycdn.imooc.com//562c6de800010b1412070186.jpg




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

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

http://img1.sycdn.imooc.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 回答

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

0 回复 有任何疑惑可以回复我~
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);


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JDBC之 “ 对岸的女孩看过来”
  • 参与学习       99326    人
  • 解答问题       856    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信