idea的增删查改架构

    科技2024-11-08  12

    1)、RestfulCRUD:CRUD满足Rest风格;

    URI:  /资源名称/资源标识       HTTP请求方式区分对资源CRUD操作

     

    普通CRUD(uri来区分操作)

    RestfulCRUD

    查询

    getEmp

    emp---GET

    添加

    addEmp?xxx

    emp---POST

    修改

    updateEmp?id=xxx&xxx=xx

    emp/{id}---PUT

    删除

    deleteEmp?id=1

    emp/{id}---DELETE

    2)、实验的请求架构;

    实验功能

    请求URI

    请求方式

    查询所有员工

    emps

    GET

    查询某个员工(来到修改页面)

    emp/1

    GET

    来到添加页面

    emp

    GET

    添加员工

    emp

    POST

    来到修改页面(查出员工进行信息回显)

    emp/1

    GET

    修改员工

    emp

    PUT

    删除员工

    emp/1

    DELETE

    #Spring 默认关闭Spring hiddenmethod 过滤器的 需要在application.properties配置文件手动开启

    关于提交请求方式form表单默认只有两种提交方式(Post、Get),需要另外设置其它提交方式

    <!--发送put请求修改或者发送Delete请求删除员工数据--> <!-- 1、SpringMVC中配置HiddenHttpMethodFilter;(SpringBoot自动配置好的) 2、页面创建一个post提交的form表单 3、form表单里面再创建一个input项,name="_method";值就是我们指定的请求方式--> 例如: <input type="hidden" name="_method" value="put" />//修改 <input type="hidden" name="_method" value="delete"/>//删除

    查询Controller代码:

    //查询所有员工返回员工页面 @GetMapping("/emps") public String list(Model model){ //employeeDao.getAll().var 自动生成局部变量的快捷方式 Collection<Employee> employees = employeeDao.getAll(); //放在请求域中 model.addAttribute("emps",employees); //默认拼串 return "emp/list"; }

    查询Html代码:

    <tr th:each="emp:${emps}"> <td th:text="${emp.id}"></td> <td>[[${emp.lastName}]]</td> <td>[[${emp.email}]]</td> <td>[[${emp.gender}==0?'女':'男']]</td> <td>[[${emp.department.departmentName}]]</td> <td th:text="${#dates.format(emp.birth,'yyyy-MM-dd HH:mm:ss')}"></td> <td> <a class="btn btn-sm btn-primary" th:href="@{/emp/}+${emp.id}">编辑</a> <button th:attr="del_uri=@{/emp/}+${emp.id}" class="btn btn-sm btn-danger deleteBtn">删除</button> </td> </tr>

    新增和修改Controller代码:

    //员工添加 //SpringMvc自动将请求参数和入参对象的属性进行一一绑定 @PostMapping("/emp") public String addEmp(Employee employee){ // System.out.printf("保存的信息"+employee); //保存员工方法 employeeDao.save(employee); //来到员工列表页面 //redirect:表示重定向到一个地址 /代表当前项目路径 //forward:表示转发到一个地址 return "redirect:/emps"; } //修改页面,查出当前员工,在页面回显 @PathVariable 表示该变量不能为空 @GetMapping("/emp/{id}") public String toEditPage(@PathVariable("id") Integer id,Model model){ Employee employee = employeeDao.get(id); model.addAttribute("emp",employee); //查出所有部门 Collection<Department> departments = departmentDao.getDepartments(); model.addAttribute("depts",departments); //回到页面 return "emp/add"; } //员工修改 @PutMapping("/emp") public String updateEmployee(Employee employee){ // System.out.printf(String.valueOf(employee)); employeeDao.save(employee); return "redirect:/emps"; }

    新增和修改Html代码:

    <form th:action="@{/emp}" method="post"> <!--发送put请求修改员工数据--> <!-- 1、SpringMVC中配置HiddenHttpMethodFilter;(SpringBoot自动配置好的) 2、页面创建一个post表单 3、创建一个input项,name="_method";值就是我们指定的请求方式 --> <input type="hidden" name="_method" value="put" th:if="${emp !=null}"/> <input type="hidden" name="id" th:if="${emp !=null}" th:value="${emp.id}"/> <div class="form-group"> <label>LastName</label> <input name="lastName" type="text" class="form-control" placeholder="zhangsan" th:value="${emp !=null}?${emp.lastName}"> </div> <div class="form-group"> <label>Email</label> <input name="email" type="email" class="form-control" placeholder="zhangsan@atguigu.com" th:value="${emp !=null}?${emp.email}"> </div> <div class="form-group"> <label>Gender</label><br/> <div class="form-check form-check-inline"> <input class="form-check-input" type="radio" name="gender" value="1" th:checked="${emp !=null}?${emp.gender==1}"> <label class="form-check-label">男</label> </div> <div class="form-check form-check-inline"> <input class="form-check-input" type="radio" name="gender" value="0" th:checked="${emp !=null}?${emp.gender==0}"> <label class="form-check-label">女</label> </div> </div> <div class="form-group"> <label>department</label> <!--提交的是部门的id--> <select class="form-control" name="department.id"> <option th:selected="${emp !=null}?${dept.id == emp.department.id}" th:value="${dept.id}" th:each="dept:${depts}" th:text="${dept.departmentName}">1</option> </select> </div> <div class="form-group"> <label>Birth</label> <input name="birth" type="text" class="form-control" placeholder="zhangsan" th:value="${emp !=null}?${#dates.format(emp.birth,'yyyy-MM-dd HH:mm:ss')}"> </div> <button type="submit" class="btn btn-primary" th:text="${emp !=null}?'修改':'添加'">添加</button> </form>

    删除Controller代码:

    //删除 @DeleteMapping("/emp/{id}") public String deleteEmployee(@PathVariable("id") Integer id){ employeeDao.delete(id); return "redirect:/emps"; }

    删除Html代码:

    <button th:attr="del_uri=@{/emp/}+${emp.id}" class="btn btn-sm btn-danger deleteBtn">删除</button> <form id="deleteEmpForm" method="post"> <input type="hidden" name="_method" value="delete"/> </form> <script> $(".deleteBtn").click(function(){ //删除当前员工的 $("#deleteEmpForm").attr("action",$(this).attr("del_uri")).submit(); }); </script>

    Processed: 0.068, SQL: 8