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

为什么我这方法中写入的SQL语句会不行?

//按照参数集合进行查询
public List<Goddess> queryByParams(List<Map<String,Object>> params) throws Exception{
    List<Goddess> goddesses = new ArrayList<Goddess>();
    Connection conn = DBHelper.getConn();
    StringBuilder sb = new StringBuilder();
    sb.append("select * from imooc_goddess where 1=1 ");
    if (params!=null&&params.size()>0){
        for (int i=0;i<params.size();i++) {
            if(i == 0){
                Map<String, Object> param = params.get(i);
                sb.append(" and "+" ( " + param.get("name") + " " + param.get("relat") + " " + param.get("value") + " ");
            }else if(i==1){
                Map<String, Object> param = params.get(i);
                sb.append(" or " + param.get("name") + " " + param.get("relat") + " " + param.get("value") + " ");
            }
        }
        sb.append(" ) ");
    }
    PreparedStatement statement = conn.prepareStatement(sb.toString());
    System.out.println(sb.toString());
    ResultSet rs = statement.executeQuery();
    Goddess g = null;
    while(rs.next()){
        g=new Goddess();
        g.setUser_name(rs.getString("user_name"));
        g.setId(rs.getInt("id"));
        g.setAge(rs.getInt("age"));
        g.setSex(rs.getInt("sex"));
        g.setBirthday(rs.getDate("birthday"));
        g.setEmail(rs.getString("email"));
        g.setMobile(rs.getString("mobile"));
        g.setCreate_date(rs.getDate("create_date"));
        g.setCreate_user(rs.getString("create_user"));
        g.setUpdate_date(rs.getDate("update_date"));
        g.setUpdate_user(rs.getString("update_user"));
        g.setIsdel(rs.getInt("isdel"));
        goddesses.add(g);
    }
    return goddesses;
}
main方法:
GoddessDao gd =new GoddessDao();
List<Map<String,Object>> params = new ArrayList<Map<String,Object>>();
Map<String,Object> param1 = new HashMap<String, Object>();
param1.put("name","user_name");
param1.put("relat","=");
param1.put("value","'小美'");
params.add(param1);
Map<String,Object> param2 = new HashMap<String, Object>();
param2.put("name","mobile");
param2.put("relat","=");
param2.put("value","'187'");
params.add(param2);
List<Goddess> goddesses = gd.queryByParam(params);
for (Goddess g : goddesses){
    System.out.println(g.toString());
}


是 i==0 判断不了吗?

正在回答

3 回答

错误在哪里?是编译报错 还是运行结果结果报错 还是查询结果为空?

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

moummm 提问者

这个方法用多组参数一起查询的结果是并集还是交集吖?
2017-09-23 回复 有任何疑惑可以回复我~
#2

moummm 提问者

参数集合查询和多组参数查询是一样的吗?
2017-09-23 回复 有任何疑惑可以回复我~

运行没报错,就是用手机号码查询的时候查不到,而用姓名查的时候可以查的到,应该sql语句没写对的问题

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

阿双otw

手机号查询那应该写成like,要用模糊查询
2017-09-26 回复 有任何疑惑可以回复我~
#2

moummm 提问者 回复 阿双otw

这个已经修改过了,但是还是查不到
2017-09-27 回复 有任何疑惑可以回复我~

where 1=1?没这么写过

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

moummm 提问者

那应该怎么写呢?
2017-08-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我这方法中写入的SQL语句会不行?

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