JSP頁面複合查詢詳解
阿新 • • 發佈:2018-11-13
主要是通過拼接SQL語句實現。將查詢條件寫到一個方法中去,通過判斷頁面傳來的引數是否為NULL或空值,拼接完整的SQL語句。以專案為例:
java頁面:
方法名(引數,引數……),有幾個條件寫幾個引數;
寫sql主語句,注意where 1=1 {criteria},{criteria}前要有空格;
寫條件判斷,如果條件引數不為空,則拼接sql子語句;
使用sql.replace替換sql語句;
好了,直接上程式碼
public List<Sku> findByCondition(String proname,String sername,String nwjudge,String createtime1,String createtime2) throws SQLException{//方法 Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; Sku s=null; List<Sku> skus = new ArrayList<Sku>(); String sql="select id,sku,nwjudge,proname,sername,invname,state,life,createtime from SERSKU where 1=1 {criteria}";//主sql語句 String condition=""; if(proname!=null&&proname!="") {//判斷引數是否為null或空 condition=condition+ "And proname like '%"+proname+"%' ";//不為空的話就增加子sql語句 } if(sername!=null&&sername!="") {//同理 condition=condition+ "And sername like '%"+sername+"%' "; } if(nwjudge!=null&&nwjudge!="") {//同理 condition=condition+ "And nwjudge = '"+nwjudge+"' "; } if(createtime1!=null&&createtime1!=""&&createtime2!=null&&createtime2!="") {//同理 condition=condition+"And createtime >='"+createtime1+"'and createtime <='"+createtime2+"' "; } sql=sql.replace("{criteria}", condition);//替換主語句 try {//以下為JDBC資料庫連線語句 conn=DBUtil.getConnection(); ps=conn.prepareStatement(sql); rs=ps.executeQuery(); while(rs.next()){ s = new Sku(); s.setId(rs.getInt(1)); s.setSku(rs.getString(2)); s.setNwjduge(rs.getString(3)); s.setProname(rs.getString(4)); s.setSername(rs.getString(5)); s.setInvname(rs.getString(6)); s.setState(rs.getString(7)); s.setLife(rs.getString(8)); s.setCreatetime(rs.getString(9)); skus.add(s); } }catch(SQLException e) { e.printStackTrace(); throw new SQLException("根據條件查詢失敗"); } return skus; }
JSP頁面:
提交的引數寫在一個form裡面提交即可,接收頁面使用request.getParameter接收引數傳值,中文字元可以使用request.setCharacterEncoding("utf-8")避免字元亂碼問題