Restful的CRUD操作
实验功能 | 请求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操作相关推荐
- SpringBoot(四) Web开发(2)Restful风格的CRUD操作
1.创建工程 使用之前使用的Spring提供的向导,快速创建一个包含web模板的SpringBoot工程:springboot-web-restful: 1.1 pom.xml如下 <?xml ...
- Spring boot的Restful风格CRUD
Restful风格 RestfulCRUD 表示,CRUD满足Rest风格 URI:/资源名称/资源标识 HTTP请求方式,区分对资源CRUD操作 Emp,资源名称 增删改查 请求方式
- mybatis CRUD操作
mybatis CRUD操作 select select标签是mybatis最常用的标签之一. select语句有很多属性可以详细的配置每一天sql语句. id 命名空间唯一的标识. 接口中的方法名与 ...
- mybatis 一对多_Springboot整合Mybatis实现级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- php 命令执行crud_如何使用原始JavaScript执行CRUD操作
php 命令执行crud by Zafar Saleem 通过Zafar Saleem 如何使用原始JavaScript执行CRUD操作 (How to perform CRUD operations ...
- 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 ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- 创建包含CRUD操作的Web API接口-第一部
在这里,我们将创建一个新的Web API项目,它将使用实体框架实现Get,POST.PUT和DELETE方法来实现CRUD操作. 首先,在Visual Studio 2013 for Web expr ...
- java中利用框架传入相同的url实现crud操作_还在手写CRUD代码?这款开源框架助你解放双手!
相信很多朋友在项目中使用的ORM框架都是MyBatis,如果单用MyBatis来操作数据库的话,需要手写很多单表查询的SQL实现.这时候我们往往会选择一个增强工具来实现这些单表CRUD操作,这里推荐一 ...
最新文章
- 关于学习Python的一点学习总结(44->类中的比较操作符号重写)
- 两台服务器安装redis集群_Redis Cluster搭建高可用Redis服务器集群
- 【具体使用实例】Rall封装线程(C\C++)
- base库中的BarrierClosure
- Linux系统下部署Tomcat
- 初识-Android之智能短信项目相关技术整理
- helm安装mysql_helm安装配置
- Mybatis Generator 配置详解
- micropython中文社区-micropython支持中文啦!
- antd form rules字数限制_Package - antd-form-rules
- 软件工程综合实践第二次作业——结对编程
- 如何面对科技性失业?
- php 函数 累乘 累加,如何实现EXCEL中的累加计算【累加累乘】
- 沧桑,何尝不是一种美丽 ----红尘一笑
- 腾讯云快速增长背后 三大短板仍需补足
- 8266 lua贝壳物联智能开关,更新修正tmr.alarm问题
- Java里子类调用父类构造方法问题
- 实用Python程序设计测验练习:正常血压
- 巴塞尔协议中的计算公式_在巴塞尔协议I 中,资本充足率的计算仅对( )加权资产。...
- html个性签名怎么写,手把手教你写出自己的个性签名
热门文章
- mpython掌控板编程_MicroPython动手做(20)——掌控板之三轴加速度
- 2011年11月12日
- Hot Chocolate提供了UseFiltering属性来用于构造包含查询过滤的SQL语句,所以我们直接使用就好了
- android入门之App Links应用链接
- android插件化原理
- setscale方法的用法_BigDecimal.setScale用法总结
- iOS/Android 微信及浏览器中唤起本地 APP
- 2023年全国最新安全员精选真题及答案48
- EMMC Packed Command
- 2019.3.summary