控制层:com.emp.controller.PageSelectServlet package com.emp.controller; import com.emp.model.Employee; import com.emp.service.EmployeeService; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * 员工的分页查询(可以带条件) */ @WebServlet("/pageSelect") public class PageSelectServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { int current = Integer.parseInt(req.getParameter("current")); int limit = Integer.parseInt(req.getParameter("limit")); Employee employee = dealReqParams(req); EmployeeService service = new EmployeeService(); String data = service.pageSelect(current, limit, employee); resp.setContentType("text/html;charset=UTF-8"); PrintWriter out = resp.getWriter(); out.write(data); } /** * 将请求参数封装为Employee对象 * @return 将条件封装为Employee对象 */ public Employee dealReqParams(HttpServletRequest req) { Employee employee = new Employee(); // 获取请求参数(条件查询表单的条件) String username = req.getParameter("username"); String name = req.getParameter("name"); String age = req.getParameter("age"); String hometown = req.getParameter("hometown"); String createTime = req.getParameter("createTime"); String sex = req.getParameter("sex"); String level = req.getParameter("level"); String workTime = req.getParameter("workTime"); // 对条件查询表单的条件进行判断 if (username != null && !username.equals("")) { employee.setUsername(username); } if (name != null && !name.equals("")) { employee.setName(name); } if (age != null && !age.equals("")) { employee.setAge(Integer.parseInt(age)); } if (workTime != null && !workTime.equals("")) { employee.setWorkTime(Integer.parseInt(workTime)); } if (hometown != null && !hometown.equals("")) { employee.setHometown(hometown); } if (createTime != null && !createTime.equals("")) { employee.setCreateTime(createTime); } if (sex != null && !sex.equals("")) { employee.setSex(Integer.parseInt(sex)); } if (level != null && !level.equals("")) { employee.setLevel(Integer.parseInt(level)); } return employee; } } |
服务层:com.emp.service.EmployeeService /** * 条件分页查询 * * @param current:当前页 * @param limit:从结果集中获取数据的长度 * @param employee:查询条件 * @return 当前页显示的记录数 */ public String pageSelect(int current, int limit, Employee employee) { int total = dao.selectCount(employee); // 获取总记录数 HashMap<String, Object> map = new HashMap<>(); if (total > 0) { int pages = (total + limit - 1) / limit; // 计算分页总数 // 计算从结果集中获取数据的起始索引 int startIndex = (current - 1) * limit; List<Employee> list = dao.pageSelect(startIndex, limit, employee); map.put("code", 200); map.put("total", total); // 总记录数 map.put("pages", pages); // 分页总数 map.put("rows", list); // 表格中显示的数据 map.put("current", current); // 当前页 map.put("limit", limit); // 每页显示记录数 } else { map.put("code", 500); map.put("data", null); } return JSON.toJSONString(map); } |
数据访问层:com.emp.dao.EmployeeDao /** * 将查询条件处理为SQL语句 * * @param employee:查询条件 * @return select语句 */ private String dealSQL(Employee employee) { String sql = "select * from employee where deleted=0 "; if (employee.getUsername() != null && !employee.getUsername().equals("")) { sql += " and username like '%" + employee.getUsername() + "%'"; } if (employee.getName() != null && !employee.getName().equals("")) { sql += " and name like '%" + employee.getName() + "%'"; } if (employee.getCreateTime() != null && !employee.getCreateTime().equals("")) { sql += " and createTime >= '" + employee.getCreateTime() + "'"; } if (employee.getHometown() != null && !employee.getHometown().equals("")) { sql += " and hometown like '%" + employee.getHometown() + "%'"; } if (employee.getAge() > 0) { sql += " and age>= " + employee.getAge(); } if (employee.getSex() > 0) { sql += " and sex= " + employee.getSex(); } if (employee.getWorkTime() > 0) { sql += " and workTime>= " + employee.getWorkTime(); } if (employee.getLevel() > 0) { sql += " and level= " + employee.getLevel(); } return sql; } /** * 查询符合条件的总记录数 * * @param employee:查询条件 * @return 查询符合条件的总记录数 */ public int selectCount(Employee employee) { String sql = dealSQL(employee); try { PreparedStatement ps = connection.prepareStatement(sql); ResultSet resultSet = ps.executeQuery(); resultSet.last(); // 指针移到最后一行 return resultSet.getRow(); // 获得当前的行号 } catch (SQLException e) { e.printStackTrace(); } return 0; } /** * 条件分页查询 * * @param startIndex:从结果集中获取数据的起始索引 * @param limit:从结果集中获取数据的长度 * @param condition:查询条件 * @return 当前页显示的记录数 */ public List<Employee> pageSelect(int startIndex, int limit, Employee condition) { List<Employee> list = new ArrayList<>(); String sql = dealSQL(condition); sql += " order by role asc, createTime desc limit " + startIndex + ", " + limit; try { PreparedStatement ps = connection.prepareStatement(sql); ResultSet resultSet = ps.executeQuery(); while (resultSet.next()) { int id = resultSet.getInt("id"); int age = resultSet.getInt("age"); int workTime = resultSet.getInt("workTime"); String username = resultSet.getString("username"); String password = resultSet.getString("password"); String name = resultSet.getString("name"); String introduction = resultSet.getString("introduction"); String hometown = resultSet.getString("hometown"); String phone = resultSet.getString("phone"); String createTime = resultSet.getString("createTime"); int role = resultSet.getInt("role"); int sex = resultSet.getInt("sex"); int level = resultSet.getInt("level");
// 创建Employee对象 Employee employee = new Employee(); employee.setId(id); employee.setUsername(username); employee.setPassword(password); employee.setRole(role); employee.setName(name); employee.setSex(sex); employee.setAge(age); employee.setLevel(level); employee.setIntroduction(introduction); employee.setHometown(hometown); employee.setWorkTime(workTime); employee.setPhone(phone); employee.setCreateTime(createTime); list.add(employee); } } catch (SQLException e) { e.printStackTrace(); } return list; } |