一、前端页面的代码
<div>
<form action="${pageContext.request.contextPath}/ProductServlet" method="get">
<input type="hidden" name="action" value="findAllProductsByTJ">
<select name="cid">
<c:forEach items="${categoryList}" var="category">
<option value="${category.cid}">${category.cname}</option>
</c:forEach>
</select>
<input type="text" name="pname">
<input type="submit" value="搜索">
</form>
</div>
页面的样式:
<style type="text/css">
div{
position:absolute;/*绝对定位*/
left:529px;
top:80px;
}
</style>
点击搜索,提交表单后,跳转到ProductServlet执行代码:
/*
*多条件组合查询
* */
public void findAllProductsByTJ(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
//获得请求参数 cid pname
String cid=request.getParameter("cid");
String pname=request.getParameter("pname");
//调用service 层多条件组合查询的方法
List<Product> productList=service.findAllProductsByTJ(cid,pname);
//将查询结果保存request域中
request.setAttribute("productList",productList );
//转发到product_list.jsp
request.getRequestDispatcher("/product_list.jsp").forward(request,response );
}
service层代码:
/*
* 多条件组合查询
* */
public List<Product> findAllProductsByTJ(String cid, String pname) {
return dao.findAllProductsByTJ(cid,pname);
}
dao层代码:
/*
* 多条件查询
* */
public List<Product> findAllProductsByTJ(String cid, String pname) {
//1.获得JDBCTemplate
JdbcTemplate template=new JdbcTemplate(DRUIDUtils.getDataSource());
//2.编写临时SQL语句
StringBuilder sb=new StringBuilder("select * from product where 1=1 ");
//3.定义一个list集合存储SQL语句占位符的值
ArrayList<Object> list=new ArrayList<>();
//判断cid
if(cid!=null && !cid.trim().equals("")){
sb.append("and cid=? ");
list.add(cid);
}
//判断pname
if(pname!=null && !pname.trim().equals("")){
sb.append("and pname like ?");
list.add(pname);
}
//生成最终SQL语句
String sql=sb.toString();
//设置实际参数
Object[] params=list.toArray();
//执行查询操作
List<Product> products=template.query(sql,new BeanPropertyRowMapper<>(Product.class) ,params );
return products;
}