JavaWeb不定條件查詢

2021-07-22 05:33:51 字數 2073 閱讀 4709

在web開發中會遇到不定條件查詢,所謂不定條件就是在頁面端有多個查詢條件約束,而這些條件使用者可以選擇也可以不選擇,這樣就會造成sql語句的變化,因此不能將sql語句寫死,另外這也給sql語句的引數賦值造成了一定影響,前幾天上課做乙個簡單小示例,我上網搜尋了一下,發現網上的做法有很多,受csdn上xulu_258的一篇部落格(啟發,我做了一下細化及一些改進頁面端jsp如下

<%@ page pageencoding="gbk" %>

獲取頁面端資料的servlet如下:

將頁面端獲取的資料放到陣列中去,作為引數傳給查詢方法queryperson();

}關鍵的資料庫操作部分:

將頁面端獲取到的查詢引數還原,然後用stringbuilder來new乙個基本的查詢語句,例如:"select * from person(表名) where 1=1", where 1=1是為了考慮到後面我們新增條件時直接用and,而不是在重複的使用if語句來判斷用where還是and.   

同時,如果該條件不為空,則將改值放到list中,因為list的有序性,為我們以後的問號賦值提供了便利,賦值時我們只需要便利list即可,因為問號是和list中的引數值是一一對應的。

public list> queryperson(string...val)throws exception		

if(pnumber!=null&&pnumber.equals(""))

if(xl!=null&&xl.equals(""))

if(jszc!=null&&jszc.equals(""))

if(bsal!=null&&bsal.equals(""))

if(esal!=null&&esal.equals(""))

system.out.println(sql);

system.out.println(pars);

psmt=conn.preparestatement(sql.tostring());

int index=1;

for (object parm : pars)

rs=psmt.executequery();

resultsetmetadata rsmd=rs.getmetadata();

int count=rsmd.getcolumncount();

int init_size=((int)(count/0.75))+2;

list> rows=new arraylist<>();

mapins=null;

while(rs.next())

rows.add(ins);

}return rows;

}finally

//return null;

}

查詢結果的處理,查詢出的結果我們利用resultsetmetadata將結果集的每一行都封裝到list>中,resultsetmetadata是resultset的子類但是它保留結果集的完整結構,我們可以利用它獲取每一列的名稱,並且還能獲得一共有多少列,方便我們計算map的初始容量,但是由於map的無序性造成了封裝的資料雜亂無章,在頁面端無法有序顯示,這一點我還沒有解決

這是我第一次寫部落格,有很多地方不能表達清楚,希望大家見諒

Java Web 中的多條件查詢

所謂多條件查詢即為使用者輸入想要查詢的條件,然後根據使用者輸入的條件進行查詢。當使用者有可能什麼也不輸入,這個條件我們應該考慮到。如果不輸入就查詢,則我們在頁面上顯示所有的查詢結果,當使用者輸入乙個條件,我們則根據使用者輸入的這乙個條件來進行查詢,兩個條件,三個條件也是一樣,而這個時候我們就應該考慮...

java web中的多條件查詢

所謂多條件查詢即為使用者輸入想要查詢的條件,然後根據使用者輸入的條件進行查詢。當使用者有可能什麼也不輸入,這個條件我們應該考慮到。如果不輸入就查詢,則我們在頁面上顯示所有的查詢結果,當使用者輸入乙個條件,我們則根據使用者輸入的這乙個條件來進行查詢,兩個條件,三個條件也是一樣,而這個時候我們就應該考慮...

JavaWeb 分頁查詢

之前寫的簡易購物車系統,在顯示圖書列表的時候是全部顯示出來,圖書少的時候沒有什麼問題,但當圖書數量變多的時候,一下子把全部圖書顯示出來會讓介面看的不美觀,所以就打算加個分頁查詢的功能 最終效果 實現 分頁查詢有幾個比較重要的引數,pagenum當前的頁數,pagesize每頁所展示的資料,total...