zoukankan      html  css  js  c++  java
  • springboot_数据增删改查

    前期数据准备(模拟数据库)

    @Repository
    public class DepartmentDao {
        //模拟数据库中的数据
        private static Map<Integer, Department> departmentMap = null;
        static {
            departmentMap = new HashMap<>();
            departmentMap.put(101,new Department(101,"教学部"));
            departmentMap.put(102,new Department(102,"市场部"));
            departmentMap.put(103,new Department(103,"教研部"));
            departmentMap.put(104,new Department(104,"运营部"));
            departmentMap.put(105,new Department(105,"后勤部"));
        }
        //获得所有部门信息
        public Collection<Department> getDepartment(){
            return departmentMap.values();
        }
        //通过ID获取部门
        public Department getDepartmentById(Integer id){
            return departmentMap.get(id);
        }
    }
    
    @Repository
    public class EmployeeDao {
    
        private static Map<Integer, Employee> employeeMap = null;
        @Autowired
        private DepartmentDao departmentDao;
        static {
            employeeMap = new HashMap<>();
            employeeMap.put(1001,new Employee(1001,"AA","123456AA@qq.com",1,new Department(101,"教学部")));
            employeeMap.put(1002,new Employee(1002,"BB","123456BB@qq.com",0,new Department(102,"市场部")));
            employeeMap.put(1003,new Employee(1003,"CC","123456CC@qq.com",1,new Department(103,"教研部")));
            employeeMap.put(1004,new Employee(1004,"DD","123456DD@qq.com",0,new Department(104,"运营部")));
            employeeMap.put(1005,new Employee(1005,"EE","123456EE@qq.com",1,new Department(105,"后勤部")));
        }
        //主键自增
        private static Integer initId = 1;
        //增加操作
        public void add(Employee employee){
            if (employee.getId() == null){
                employee.setId(initId++);
            }
            employee.setDepartment(departmentDao.getDepartmentById(employee.getDepartment().getId()));
            employeeMap.put(employee.getId(),employee);
        }
        //查询全部员工
        public Collection<Employee> getAllEmployee(){
            return employeeMap.values();
        }
        //按id查询信息
        public Employee getEmployeeById(Integer id){
            return employeeMap.get(id);
        }
        //通过id删除员工
        public void deleteEmployeeById(Integer id){
            employeeMap.remove(id);
        }
    }
    

    1、员工列表展示(查)

    • thymeleaf提取公共页面
      • 提取:th:fragment="sidebar"
      • 插入:<div th:replace="~{commons/commons::sidebar}"></div>
        或者<div th:insert="~{commons/commons::sidebar}"></div>
      • 如果传递参数:使用():
        <div th:insert="~{commons/commons::sidebar(active='main.html')}"></div>
      • 接收判断:
        <a th:class="${active=='main.html'?'nav-link active':'nav-link'}" th:href="@{/index.html}">
    • 列表循环展示
      • Controller返回前端数据:
        @Controller
        public class EmployeeController {
            @Autowired
            EmployeeDao employeeDao;
        
            @RequestMapping("/emps")
            public String list(Model model){
                Collection<Employee> employees = employeeDao.getAllEmployee();
                model.addAttribute("emps",employees);
                return "emp/list";
            }
        }
        
      • 遍历循环:
        <tr th:each="emp:${emps}">
            <td th:text="${emp.getId()}"></td>
            <td th:text="${emp.getLastName()}"></td>
            <td th:text="${emp.getEmail()}"></td>
            <td th:text="${emp.getGender()==0?'女':'男'}"></td>
            <td th:text="${emp.getDepartment().getDepartmentName()}"></td>
            <td th:text="${#dates.format(emp.getBirth(),'yyyy-MM-dd HH:mm:ss')}"></td>
        </tr>
        

    2、添加员工(增)

    • 提交按钮
      <!-- 设置action,进入对应的controller  请求方法:post -->
      <form th:action="@{/emp}" method="post">
      
      //进入@PostMapping的controller
      @PostMapping("/emp")
      public String addEmp(Employee employee){
          System.out.println(employee);
          employeeDao.add(employee);
          return "redirect:/emps";
      }
      
    • 跳转到添加页面
      <!-- 点击添加添加员工,进行页面跳转 -->
      <h2><a class="btn btn-sm btn-success" th:href="emp">添加员工</a></h2>
      
      //对应的controller,@GetMapping,此controller进行页面的跳转
      //model设置departments参数返回前端显示
      @GetMapping("/emp")
      public String toAddPage(Model model){
          Collection<Department> department = departmentDao.getDepartment();
          model.addAttribute("departments",department);
          return "emp/add";
      }
      
        <!-- 前端遍历departments进行显示 -->
        <select class="form-control" name="department.id">
            <option th:each="dept:${departments}" th:text="${dept.getDepartmentName()}" th:value="${dept.getId()}"></option>
        </select>
      
    • 添加员工成功
    • 返回首页
      @PostMapping("/emp")
          public String addEmp(Employee employee){
              System.out.println(employee);
              employeeDao.add(employee);
              //重定向到员工信息页面,
              return "redirect:/emps";
          }
      
      //跳转到对应这,返回list页面。
      @RequestMapping("/emps")
      public String list(Model model){
      Collection<Employee> employees = employeeDao.getAllEmployee();
      model.addAttribute("emps",employees);
      return "emp/list";
      }
      

    3、员工修改信息(改)

    • 编辑按钮
      <!-- 添加id参数,以便于修改页面显示对应的信息-->
      <!-- http://localhost:8080/emp/1001 -->
      <a class="btn btn-sm btn-primary" th:href="@{/emp/}+${emp.getId()}">编辑</a>
      
    • 跳转页面controller
      //去员工的修改页面
          @GetMapping("/emp/{id}")
          public String toUpdatePage(@PathVariable("id")Integer id,Model model){
              //查出原来的数据
              Employee employee = employeeDao.getEmployeeById(id);
              model.addAttribute("employee",employee);
              //查询所有部门的信息
              Collection<Department> department = departmentDao.getDepartment();
              model.addAttribute("departments",department);
              return "emp/update";
          }
      
    • 添加隐藏域,防止在用户展示页面会自增长
      <!--添加隐藏域-->
      <input type="hidden" name="id" th:value="${employee.getId()}">
      
    • 修改成功,跳转页面
      <form th:action="@{/empUpdate}" method="post"></form>
      
      //去员工的修改页面
      @PostMapping("/empUpdate")
      public String updateEmp(Employee employee){
          employeeDao.add(employee);
          return "redirect:/emps";
      }
      

    4、删除信息(删)

    • 删除的标签

      <a class="btn btn-sm btn-danger" th:href="@{/delEmp/}+${emp.getId()}">删除</a>
      
    • 跳转的controller

      //删除员工
      @GetMapping("/delEmp/{id}")
      public String deleteEmp(@PathVariable("id")Integer id){
          employeeDao.deleteEmployeeById(id);
          return "redirect:/emps";
      }
      

    5、注销

    • 前端
      <a class="nav-link" th:href="@{/user/logout}">注销</a>
      
    • controller
      @RequestMapping("/user/logout")
      public String logout(HttpSession session){
          session.invalidate();
          return "redirect:/index.html";
      }
      
  • 相关阅读:
    ok
    Android设备激活量超10亿 3个月增长1亿台
    JavaWeb--文件的上传和下载
    JavaWeb--Listener
    JavaWeb--JSTL
    JavaWeb--自定义标签4--EL自定义函数
    JavaWeb--自定义标签4--带父标签的自定义标签
    codeforces 437B. The Child and Set 解题报告
    codeforces 437A. The Child and Homework 解题报告
    codeforces 435 B. Pasha Maximizes 解题报告
  • 原文地址:https://www.cnblogs.com/jsit-dj-it/p/14952202.html
Copyright © 2011-2022 走看看