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&&params.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对面的女孩看过来课程

posted @ 2015-04-15 23:40  天叨叨  阅读(515)  评论(0编辑  收藏  举报