Controller层校验
入参校验
具体使用详见Bean Validation参数校验
在controller层进行入参校验,在springBoot项目中使用spring-boot-starter-validation
进行集成。
在spring-boot-starter-web
的2.1.5.RELEASE
版本中包含了hibernate-validator
的6.0.16
版本,不需要额外引入。
正确的食用参数校验可以避免大量的if-else参数判断
通过@Constraint注解可以实现自定义的参数校验,需要指定的参数class实现自ConstraintValidator
服务层调用
通过注入的service层进行正常调用,如果结果与预期不符合直接抛出一个异常,如果正常结束返回正常的结果,如果是引发的异常通过全局的异常处理器进行统一处理
Service层调用
service层使用的mybatis-plus的一个orm映射框架,通过lambda表达式进行增删改查逻辑处理。
由于mysql数据库是无法存储list集合,需要在给list集合的字段指定typeHandler
自定义handler继承自BaseTypeHandler,通过fastjson进行序列化和反序列化操作。
通过@Transactional
来开启事务,在简易的模型当中应当尽量避免开启事务
dao层增删改查
dao层只需要定义一个接口继承自BaseMapper,mybatis会自动的帮我们生成大量的增删改查语句,无需手动生成,当然也可以通过注解和xml文件进行新增sql语句,注解的方式只适用于简单的sql,如果是复杂的sql语句建议使用xml文件生成。
domain层
domain主要使用hibernate-validator
进行参数校验,当然也可以在controller层进行调用,在调用参数校验的外部需要添加@Validated
注解,对于一些复杂的校验模型可以选择自定义参数校验注解
实体类通过lombok的注解简化了大量的重复性工作。
对于集合需要手动创建handler进行处理
在分页场景中使用的pagehelper进行分页查询,在使用之前需要配置分页拦截器
minio 文件存储
定义一套service接口对存储在minio桶中的文件进行新增、获取、删除,当然文件获取也可以通过nginx配置文件来获取