public static void main(String[] args) {
List<Map<String, Object>> params = new ArrayList<Map<String,Object>>();
Map<String, Object> param = new HashMap<String, Object>();
//查询条件
param.put("k", "user_name");
param.put("v", "'小美'");
param.put("rela", "=");
params.add(param);
//查询条件
param = new HashMap<String, Object>();
param.put("k", "mobile");
param.put("v", "18712345678");
param.put("rela", "=");
params.add(param);
//查询条件
param = new HashMap<String, Object>();
param.put("k", "age");
param.put("v", 33);
param.put("rela", "=");
params.add(param);
//如果我查询条件很多,这里要写一堆param吗?怎么写可以简洁一点??
query(params);
}
public List<Goddess> query(List<Map<String, Object>> params) throws Exception{
List<Goddess> result=new ArrayList<Goddess>();
Connection conn=DBUtil.getConnection();
StringBuilder sb=new StringBuilder();
sb.append("select * from imooc_goddess where 1=1 ");
if(params!=null&¶ms.size()>0){
for (int i = 0; i < params.size(); i++) {
Map<String, Object> map=params.get(i);
sb.append(" and "+map.get("name")+" "+map.get("rela")+" "+map.get("value")+" ");
}
}
PreparedStatement ptmt=conn.prepareStatement(sb.toString());
System.out.println(sb.toString());
ResultSet rs=ptmt.executeQuery();
Goddess g=null;
while(rs.next()){
g=new Goddess();
g.setId(rs.getInt("id"));
g.setUser_name(rs.getString("user_name"));
g.setAge(rs.getInt("age"));
g.setSex(rs.getInt("sex"));
g.setEmail(rs.getString("email"));
g.setMobile(rs.getString("mobile"));
result.add(g);
}
return result;
}
首先,请你告诉我你使用
PreparedStatement
的理由,为什么不使用Statement
?二者有什么区别?然后 你用到了
PreparedStatement
的特性了吗?接下来我们在探讨这代码该怎么写。下面的代码仅供参考,基本不具有实践意义。