首页 > 代码库 > 菜鸟第一发:jdbc多条件组合查询

菜鸟第一发:jdbc多条件组合查询

注册了园子账号两个月了,今天刚开通博客,博客页面一片空白,对于有强迫症的我来说实在看得难受,刚好小菜鸟我最近做老师布置的课程设计需要组合查询,一开始我傻傻的拼sql语句,界面看起来乱七八糟啊,请教过老师后知道可以将表单获取的数据存进map中,再动态拼接sql语句。测试了一下发现我之前实在是太傻X了,哦马嘎!

这是我第一篇博客,记录最近的小心得,高手勿喷,谢谢。

表单处理

1 <form action="" method="post">
2   编号:<input type="text" name="field1" size="30"/>
3   修改日期:<input type="text" name="field2" size="30">
4   <input type="submit">
5 </form>

 

逻辑处理

 1 String field1=request.getParameter("field1");                                             String field2=request.getParameter("field2");                              
 2 Map<String, Object>map=new HashMap<String,Object>();     //用HashMap以键值对的形式存储数据库字段名和赋值
 3 if(field1!=null&&!field1.equals("")){
 4                 map.put("field1", field1);               
 5             }
 6 if(field2!=null&&!field2.equals("")){
 7                 map.put("field2", field2);
 8             }
 9 StringBuffer sqlBuffer=new StringBuffer("select * from tableName where 1=1");
10 for(final Entry<String, Object> entry:map.entrySet()){
11                     sqlBuffer.append(" and ").append(entry.getKey()).append("=?");        //字符串流动态拼接sql语句
12                 }
13                 System.out.println(sqlBuffer.toString());
14                 pstmt=con.prepareStatement(sqlBuffer.toString(),ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
15                 int i=1;
16                 for(final Entry<String, Object> entry:map.entrySet()){
17                     pstmt.setObject(i, entry.getValue());                                          //动态为占位符赋值
18                     i++;
19                 }
20 pstmt.execute();
21 ResultSet rSet=pstmt.getResultSet;
22                    

 

然后把ResultSet遍历存进list,再在jsp页面遍历显示就行了。

当然还有更好的方法,最近稍微学了下spring和hibernate,发现hibernate实现这个很容易也很方便。

这是我第一篇博客,我现在编程能力不济,要坚持学习,希望我的博客能见证我的进步,渴望成为大牛的那一天,努力吧!