多條件查詢是MySQL數據庫中經常使用到的一種查詢方式,它可以根據多個參數滿足篩選條件,從而返回符合條件的數據結果。在JSP開發中,我們可以通過以下幾種方式來實現多條件查詢:
1. 使用if語句拼接SQL語句
<%
String name = request.getParameter("name");
String age = request.getParameter("age");
String gender = request.getParameter("gender");
String sql = "SELECT * FROM student WHERE 1=1 "; // 1=1 是為了方便拼接,避免第一個條件沒有where
if(name != null && !"".equals(name)){
sql += "AND name like '%" + name + "%' ";
}
if(age != null && !"".equals(age)){
sql += "AND age = " + age + " ";
}
if(gender != null && !"".equals(gender)){
sql += "AND gender = '" + gender + "' ";
}
// 執行sql語句
%>
2. 使用preparedstatement拼接SQL語句
<%
String name = request.getParameter("name");
String age = request.getParameter("age");
String gender = request.getParameter("gender");
String sql = "SELECT * FROM student WHERE 1=1 ";
List<Object> params = new ArrayList<>(); // 存儲參數
if(name != null && !"".equals(name)){
sql += "AND name like ? ";
params.add("%" + name + "%"); // 添加參數
}
if(age != null && !"".equals(age)){
sql += "AND age = ? ";
params.add(age);
}
if(gender != null && !"".equals(gender)){
sql += "AND gender = ? ";
params.add(gender);
}
// 使用PreparedStatement執行sql語句
PreparedStatement pstmt = conn.prepareStatement(sql);
for(int i=0; i<params.size(); i++){
pstmt.setObject(i+1, params.get(i)); // 設置參數
}
ResultSet rs = pstmt.executeQuery(); // 執行查詢
%>
3. 使用mybatis實現多條件查詢
<select id="findStudents" parameterType="map" resultMap="studentMap">
SELECT * FROM student
WHERE
<if test="name != null and name.trim() != ''">
name like "%"||#{name}||"%"
</if>
<if test="age != null and age.trim() != ''">
AND age = #{age}
</if>
<if test="gender != null and gender.trim() != ''">
AND gender = #{gender}
</if>
</select>
以上就是實現MySQL和JSP多條件查詢的幾種方式,開發人員可以根據需要選擇最適合自己的方法,以方便高效的進行數據查詢。