条件查询详解

目录

纯servlet的条件查询(简单)

在servlet里

在dao里


前言

条件查询是一个必备的内容,这里会根据知识点分为几部分,由简到难

纯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>&nbsp;&nbsp;&nbsp; 
				<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());
	}

未完待续

猜你喜欢

转载自blog.csdn.net/yzj17025693/article/details/88411039
今日推荐