0
点赞
收藏
分享

微信扫一扫

员工管理-增删改查案例——5

后端代码

控制层: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;
}

运行截图

页面效果图


举报

相关推荐

0 条评论