springboot接口签名统一效验_SpringBoot + RESTful 增删改查例子

ec525a4b0ae580173c467061a9dbd7c4.png

一个使用springboot搭建的开发环境。包括实体类的增删改查,自定义多条件的查询,声明式事务管理。

代码仓库:https://github.com/markliu2013/springboot-crud-demo

项目文件结构图。

82d707366a68b89d1907737b9d64518b.png

实现的是一个简单的员工管理系统,包括三个实体对象,员工类,部门类,薪水等级类。

员工类是系统的主要是实体对象,员工属于某一个部门,一个部门有多个员工,员工与部门是多对一关系。薪水等级类包括每个等级的薪水上限和下限,可以关联查询员工薪水属于哪个等级。实体类代码均在com.zfwhub.springboot.po下。

统一RESTful响应数据结构。

正常响应:

{
    

异常响应:

{
    

定义三个类封装响应的数据结构。BaseResponse,ResponseSuccess,ResponseError。

所有的Controller类方法签名返回BaseResponse,在方法体中,根据情况返回ResponseSuccess或ResponseError。对应没有数据响应,只是响应操作是否成功可以返回BaseResponse。

将所有的错误均包装成BaseResponse类型处理,errorCode 1-30可以定义为HTTP类型错误,如404之类的。30之后定义为业务类型的错误。

关于异常处理。

定义全局的异常处理类,com.zfwhub.springboot.exception.GlobalExceptionHandler,所有的异常响应都会在这里处理。根据异常类型,定义ResponseError类返回客户端。

事务管理。

程序中的Account实体类是为了测试转账的事务操作。

SpringBoot 有两种事务处理方式。

方式一:注解。

将service类上面加上@Transactional 注解,则service方法就会在一个事务中执行。对于只有查询操作的方法可以加上只读注释 @Transactional(readOnly=true)

方法二:AOP切面编程。

为了避免所有的service都需要加上注释,可以使用面向切面编程的声明式事务处理。

  1. 将所有的service类加入事务处理。
  2. 将所有的service类中,get或query开头的方法加入只读事务处理。
@Aspect

关于SpringBoot事务处理的方式可以参考这边文章,写的比较详细。

https://www.cnblogs.com/guozp/articles/7446477.html

以前使用Spring的时候使用xml组装各种bean和配置aop,达到不影响Java代码的目的,改配置就改变系统功能的作用,同时对配置也有个整体的观感和把握,现在又把xml里的配置做为一个个@Configuration放到java代码里面来,折腾来折腾去,哈哈。

扩展思考题:

  1. 提供接口,查询出哪些人是经理(下面管着人的)。
  2. 查询部门列表的时候,查出每个部门里员工的平均薪水。
  3. 查询出每个部门里面谁的薪水是最高的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值