这篇来介绍,多条件查询的实现过程,多条件查询其实就是思考如何去写这个sql语句,进一步说就是如何根据多个条件去拼接sql语句。
1.思路分析
就是上面这个需求,上面有四个条件,也就是where字句最多需要四个拼接一起去查询,还要考虑,四个都为空的情况。下面来看看分析思路。
1.全部为空,也就是全量查询,传入的sql 就是 “SELECT * FROM book”
2.假如根据商品名称查询,那就是“SELECT * FROM book WHERE name=xxx”
重点来了,四个条件如何去拼接,如果为空,那么这个条件就不拼接。下面的伪代码看起来是这样的。
String sql = "select * from book where"; // 定义一个基础的sql查询语句
List list = new ArrayList();
if(!"".equal(name)){
sql +=" and name=?";//注意and 前面必须有一个空格
list.add(name);
}
if(!"".equal(category)){
sql +=" and name=?"; //注意and 前面必须有一个空格
list.add(category);
}
//Dao层SQL语句这么写
qr.query(sql, list.toChary())
上面是两个条件的判断,但是有一个问题,如果都为空,也就是下面这四个if判断不走,就执行初始化的sql查询,就会报错,因为没有给出有返回值的where条件。所以,这个初始sql还需要修改一下。
String sql = "select * from book where 1=1"; // 定义一个基础的sql查询语句
2.代码实现
首先在list.jsp中查询表单这个地方,设置跳转到哪一个servlet,例如我们跳转到一个searchBooksServlet