JDBC中,如何动态的设置查询条件
今天看JDBC,发现有段代码,可以减少重复的编写查询方法,如下:
1 public List<Goddess> query(List<Map<String, Object>> params) throws Exception{ 2 List<Goddess> result=new ArrayList<Goddess>(); 3 4 Connection conn=DBUtil.getConnection(); 5 StringBuilder sb=new StringBuilder(); 6 sb.append("select * from imooc_goddess where 1=1 "); 7 8 if(params!=null&¶ms.size()>0){ 9 for (int i = 0; i < params.size(); i++) { 10 Map<String, Object> map=params.get(i); 11 sb.append(" and "+map.get("name")+" "+map.get("rela")+" "+map.get("value")+" "); 12 } 13 } 14 15 PreparedStatement ptmt=conn.prepareStatement(sb.toString()); 16 17 System.out.println(sb.toString()); 18 ResultSet rs=ptmt.executeQuery(); 19 20 Goddess g=null; 21 while(rs.next()){ 22 g=new Goddess(); 23 g.setId(rs.getInt("id")); 24 g.setUser_name(rs.getString("user_name")); 25 g.setAge(rs.getInt("age")); 26 g.setSex(rs.getInt("sex")); 27 g.setBirthday(rs.getDate("birthday")); 28 g.setEmail(rs.getString("email")); 29 g.setMobile(rs.getString("mobile")); 30 g.setCreate_date(rs.getDate("create_date")); 31 g.setCreate_user(rs.getString("create_user")); 32 g.setUpdate_date(rs.getDate("update_date")); 33 g.setUpdate_user(rs.getString("update_user")); 34 g.setIsdel(rs.getInt("isdel")); 35 36 result.add(g); 37 } 38 return result; 39 }
它使用List<Map<String ,Object>>的方式来传递数据。
map.put(name,"XXX");查询条件名
map.put(rel,"XXX");查询的条件关系,是大于、小于还是等于
map.put(value,"XXX");查询的条件值
使用list可以存放多个以上的Map,减少为了某一个功能专门写一个查询方法,增强了代码的服用!
感谢慕课网—JDBC对面的女孩看过来课程