实验功能 请求URI 请求方式
查询所有员工 emps GET
查询某个员工(来到修改页面) emp/{id} GET
来到添加页面 emp GET
添加员工 emp POST
来到修改页面(查出员工进行信息回显) emp/{id} GET
修改员工 emp PUT
删除员工 emp/{id} DELETE

员工修改、添加:

<!--需要区分是员工修改还是添加;-->
<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')}"></div><button type="submit" class="btn btn-primary" th:text="${emp!=null}?'修改':'添加'">添加</button>
</form>

员工删除:

<tr th:each="emp:${emps}"><td th:text="${emp.id}"></td><td>[[${emp.lastName}]]</td><td th:text="${emp.email}"></td><td th:text="${emp.gender}==0?'女':'男'"></td><td th:text="${emp.department.departmentName}"></td><td th:text="${#dates.format(emp.birth, 'yyyy-MM-dd HH:mm')}"></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><script>$(".deleteBtn").click(function(){//删除当前员工的$("#deleteEmpForm").attr("action",$(this).attr("del_uri")).submit();return false;});
</script>

Controller:

/*** 处理员工信息请求*/
@Controller
public class EmployeeController {@Autowiredprivate EmployeeDao employeeDao;@Autowiredprivate DepartmentDao departmentDao;//查询所有员工,返回列表页面@GetMapping("/emps")public String list(Model model){Collection<Employee> employees = employeeDao.getAll();//放在请求域中model.addAttribute("emps", employees);return "emp/list";}//来到员工添加页面@GetMapping("/emp")public String toAddPage(Model model){//来到添加页面,查出所有的部门,在页面显示Collection<Department> departments = departmentDao.getDepartments();model.addAttribute("departments", departments);return "emp/add";}//员工添加//SpringMVC自动将请求参数和入参对象的属性进行一一绑定:要求请求参数的名字和Javabean入参的对象里面的属性名是一样的@PostMapping("/emp")public String addEmp(Employee employee){//来到员工列表页面System.out.println("保存了员工信息" + employee);//保存员工employeeDao.save(employee);/*redirect: 表示重定向到一个地址    /代表当前路径项目forward:表示转发一个地址*/return "redirect:emps";}//来到修改页面,查出当前员工,在页面回显@GetMapping("/emp/{id}")public String toEditPageInteger(@PathVariable("id") Integer id, Model model){Employee employee = employeeDao.get(id);model.addAttribute("emp", employee);//来到添加页面,查出所有的部门,在页面显示Collection<Department> departments = departmentDao.getDepartments();model.addAttribute("departments", departments);//回到修改页面(add是一个修改添加二合一的页面)return "emp/add";}//员工修改,需要提交员工的id@PutMapping("/emp")public String updateEmployee(Employee employee){System.out.println("修改的员工数据" + employee);employeeDao.save(employee);return "redirect:emps";}//员工删除@DeleteMapping("emp/{id}")public String deleteEmployee(@PathVariable("id") Integer id){employeeDao.delete(id);return "redirect:/emps";}}

补充:

<!--  当路径中有常量和变量组合时,需要加上|...|来组合  -->
<a th:href="@{|/discuss/detail/${map.post.id}|}" class="ui header" th:utext="${map.post.title}">SpringBoot你知道吗?</a>@GetMapping("/detail/{discussPostId}")public String getDiscussPost(@PathVariable("discussPostId") int discussPostId, Model model) {//帖子DiscussPost post = discussPostService.queryDiscussPostById(discussPostId);model.addAttribute("post", post);//作者User user = userService.queryById(post.getUserId());model.addAttribute("user", user);return "/discuss/discuss-detail";}

Restful的CRUD操作相关推荐

  1. SpringBoot(四) Web开发(2)Restful风格的CRUD操作

    1.创建工程 使用之前使用的Spring提供的向导,快速创建一个包含web模板的SpringBoot工程:springboot-web-restful: 1.1 pom.xml如下 <?xml ...

  2. Spring boot的Restful风格CRUD

    Restful风格 RestfulCRUD 表示,CRUD满足Rest风格 URI:/资源名称/资源标识 HTTP请求方式,区分对资源CRUD操作 Emp,资源名称 增删改查 请求方式

  3. mybatis CRUD操作

    mybatis CRUD操作 select select标签是mybatis最常用的标签之一. select语句有很多属性可以详细的配置每一天sql语句. id 命名空间唯一的标识. 接口中的方法名与 ...

  4. mybatis 一对多_Springboot整合Mybatis实现级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

  5. php 命令执行crud_如何使用原始JavaScript执行CRUD操作

    php 命令执行crud by Zafar Saleem 通过Zafar Saleem 如何使用原始JavaScript执行CRUD操作 (How to perform CRUD operations ...

  6. vue.js crud_如何使用VS Code和ADO.NET使用ASP.NET Core执行CRUD操作

    vue.js crud 介绍 (Introduction) In this article we are going to create a web application using ASP.NET ...

  7. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  8. 创建包含CRUD操作的Web API接口-第一部

    在这里,我们将创建一个新的Web API项目,它将使用实体框架实现Get,POST.PUT和DELETE方法来实现CRUD操作. 首先,在Visual Studio 2013 for Web expr ...

  9. java中利用框架传入相同的url实现crud操作_还在手写CRUD代码?这款开源框架助你解放双手!

    相信很多朋友在项目中使用的ORM框架都是MyBatis,如果单用MyBatis来操作数据库的话,需要手写很多单表查询的SQL实现.这时候我们往往会选择一个增强工具来实现这些单表CRUD操作,这里推荐一 ...

最新文章

  1. 关于学习Python的一点学习总结(44->类中的比较操作符号重写)
  2. 两台服务器安装redis集群_Redis Cluster搭建高可用Redis服务器集群
  3. 【具体使用实例】Rall封装线程(C\C++)
  4. base库中的BarrierClosure
  5. Linux系统下部署Tomcat
  6. 初识-Android之智能短信项目相关技术整理
  7. helm安装mysql_helm安装配置
  8. Mybatis Generator 配置详解
  9. micropython中文社区-micropython支持中文啦!
  10. antd form rules字数限制_Package - antd-form-rules
  11. 软件工程综合实践第二次作业——结对编程
  12. 如何面对科技性失业?
  13. php 函数 累乘 累加,如何实现EXCEL中的累加计算【累加累乘】
  14. 沧桑,何尝不是一种美丽 ----红尘一笑
  15. 腾讯云快速增长背后 三大短板仍需补足
  16. 8266 lua贝壳物联智能开关,更新修正tmr.alarm问题
  17. Java里子类调用父类构造方法问题
  18. 实用Python程序设计测验练习:正常血压
  19. 巴塞尔协议中的计算公式_在巴塞尔协议I 中,资本充足率的计算仅对( )加权资产。...
  20. html个性签名怎么写,手把手教你写出自己的个性签名

热门文章

  1. mpython掌控板编程_MicroPython动手做(20)——掌控板之三轴加速度
  2. 2011年11月12日
  3. Hot Chocolate提供了UseFiltering属性来用于构造包含查询过滤的SQL语句,所以我们直接使用就好了
  4. android入门之App Links应用链接
  5. android插件化原理
  6. setscale方法的用法_BigDecimal.setScale用法总结
  7. iOS/Android 微信及浏览器中唤起本地 APP
  8. 2023年全国最新安全员精选真题及答案48
  9. EMMC Packed Command
  10. 2019.3.summary