目录
前言
条件查询是一个必备的内容,这里会根据知识点分为几部分,由简到难
纯servlet的条件查询(简单)
前期环境搭建 https://blog.csdn.net/yzj17025693/article/details/88404481
只有一个简单的student表,有sid,sname,sex和info
测试页面
我们的结果不显示在页面,直接输出到控制台,页面只用来传递条件
<form action="" method="post">
按姓名查询: <input type="text" name="sname" >
按性别查询: <select name="sex">
<option value=""/>
<option value="男"/>男
<option value="女"/>女
</select>
<input type="submit" value="查询" />
</form>
在servlet里
servlet里的内容不重要,只是传递条件和遍历出结果而已
重要的在dao层里
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
//取到条件
String sname=request.getParameter("sname");
String sex=request.getParameter("sex");
//传递条件给service
StudentService service=new StudentServiceImp();
List<Student>list=service.search(sname, sex);
System.out.println(list);
for (Student student : list)
{
System.out.println(student.getSname());
}
}
在dao里
知识点就是sql字符串拼接
public List<Student> search(String sname, String sex)
{
QueryRunner runner=new QueryRunner(JDBCUtil.getDataSource());
//如果没填条件,就查询出所有,所以后面有where 1=1
String sql="select * from stu where 1=1";
List<String>list=new ArrayList<String>();
//如果选了字符串和性别,也能够将sql串联起来
//如果都没选,也能够搜索全部,这个List可以换成StringBuilder
//如果搜索栏里填写了字符
if (sname!=null && sname!="")
{
sql=sql+" and sname like ?";
list.add("%"+sname+"%");
}
//如果选择了性别
if (sex!=null && sex!="")
{
sql=sql+" and sex=?";
list.add(sex);
}
//最后一个是可变参数,需要变成字符串数组
return runner.query(sql,new BeanListHandler<Student>(Student.class),list.toArray());
}
未完待续