注册了园子账号两个月了,今天刚开通博客,博客页面一片空白,对于有强迫症的我来说实在看得难受,刚好小菜鸟我最近做老师布置的课程设计需要组合查询,一开始我傻傻的拼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实现这个很容易也很方便。
这是我第一篇博客,我现在编程能力不济,要坚持学习,希望我的博客能见证我的进步,渴望成为大牛的那一天,努力吧!