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

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

moummm

2017-08-23 17:57

//按照参数集合进行查询
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回答

  • 总该到我了吧
    2017-09-23 10:25:10
    已采纳

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

    moummm

    参数集合查询和多组参数查询是一样的吗?

    2017-09-23 11:27:32

    共 2 条回复 >

  • moummm
    2017-09-23 11:24:06

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

    moummm 回复阿双otw

    这个已经修改过了,但是还是查不到

    2017-09-27 00:47:37

    共 2 条回复 >

  • 无爱无心
    2017-08-25 16:26:44

    where 1=1?没这么写过

    moummm

    那应该怎么写呢?

    2017-08-26 00:59:28

    共 1 条回复 >

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

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

99327 学习 · 856 问题

查看课程

相似问题