多条件查询

Posted zhai1997

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多条件查询相关的知识,希望对你有一定的参考价值。

1、流程图

技术图片

 

 因为在定义的JavaBean中没有与之对应的实体(学生姓氏、性别),因此需要创建一个VO(只有姓氏和性别),将表单提交的数据封装到VO实体中,再封装到MAP集合中,将该实体作为参数查询对应的学生集合。因为有两个条件(姓氏和性别),因此,需要用到多条件查询。

2、核心代码

(1)表单页面

<form id="Form1" name="Form1"
      action="${pageContext.request.contextPath}/studentselectservlet"
      method="get">
    学生姓氏:<input type="text" name="sname" value="${studentlist.sname }">&nbsp;&nbsp;
    学生性别:<select id="sex" name="sex">
    <option value="">不限</option>
    <option value="男"></option>
    <option value="女"></option>
    <input type="submit" value="搜索">

(2)Servlet

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        Map<String, String[]> properties = request.getParameterMap();
        Condition condition = new Condition();
        try {
            BeanUtils.populate(condition, properties);
        } catch (IllegalAccessException | InvocationTargetException e) {
            e.printStackTrace();
        }
        StudentService studentService=new StudentService();
        List<Student> studentList = null;
        try {
            studentList = studentService.StudentSelectService(condition);/
        } catch (SQLException e) {
            e.printStackTrace();
        }
        request.setAttribute("studentList", studentList);
        request.getRequestDispatcher("/student/list.jsp").forward(request,response);
    }

(3)Dao层:

 public List<Student> selectStudent(Condition condition) throws SQLException {
        Connection con=null;
        con = C3p0Utils.getConnection();
        QueryRunner qr = new QueryRunner();
        List<String> list = new ArrayList<String>();
        String sql = "select * from student where 1=1";
        if(condition.getSname()!=null&&!condition.getSname().trim().equals("")){
            sql+=" and sname like ? ";
            list.add(condition.getSname().trim()+"%");
        }
        if(condition.getSex()!=null&&!condition.getSex().trim().equals("")){
            sql+=" and sex=? ";
            list.add(condition.getSex().trim());
        }
        List<Student> studentList = qr.query(con,sql, new BeanListHandler<Student>(Student.class) , list.toArray());
        return studentList;
    }

(4)jsp:

 <c:forEach items="${studentList}" var="stu" varStatus="vs">
                        <%--forEach语句实现学生信息的罗列,var表示一个迭代的变量,items表示迭代的集合--%>
                        <tr onmouseover="this.style.backgroundColor = ‘white‘"
                            onmouseout="this.style.backgroundColor = ‘#F5FAFE‘;">

                            <td style="CURSOR: hand; HEIGHT: 22px" align="center"
                                width="6%">${stu.studentno}</td>
                            <td style="CURSOR: hand; HEIGHT: 22px" align="center"
                                width="6%">${stu.sname}</td>

                            <td style="CURSOR: hand; HEIGHT: 22px" align="center"
                                width="15%">${stu.classno}</td>
                            <td style="CURSOR: hand; HEIGHT: 22px" align="center"
                                width="15%">${stu.birthday}</td>

                            <td style="CURSOR: hand; HEIGHT: 22px" align="center"
                                width="5%">${stu.sex}</td>
                            <td style="CURSOR: hand; HEIGHT: 22px" align="center"
                                width="10%">${stu.phone}</td>

                            <td style="CURSOR: hand; HEIGHT: 22px" align="center"
                                width="10%">${stu.point}</td>

3、结果

(1)数据库:

技术图片

 

(2)查询结果:

技术图片

 

以上是关于多条件查询的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL 查询,根据某些条件使用片段。已加载 GraphQL 文件

ThinkPHP数据多条件查询代码问题?

python mongoDB 模糊查询(多条件)

SpringDataJpa多条件查询代码封装

Laravel 5.8 有条件地插入 sql 片段

Mybatis -- 动态Sql概述动态Sql之<if>(包含<where>)动态Sql之<foreach>sql片段抽取