摘要:本文我们将回归介绍、分享Spring Boot在企业级应用开发的过程中所体现出来的作用, 特别是在应用系统业务模块的开发过程中,它跟Mybatis/MybatisPlus(某种持久层框架)整合所体现出来的“双剑合璧”的巨大功效!在本篇文章中,我们将首先分享如何基于Spring Boot整合Mybatis实现基本的CRUD!

内容:作为一款用于与数据库打交道的持久层框架,Mybatis/MybatisPlus着实给我们的企业级应用系统的开发带来了不可磨灭的作用,其高度封装后的数据库操作接口,即DAO API,可以为企业级应用开发过程中的底层数据库操作带来极大的便捷性,省去了在纯生JDBC时代所需要编写的大量样板式的代码的麻烦!

可以毫不夸张地讲,大部分企业级应用的开发工作量,其核心业务逻辑就是在实现或者处理业务模块的CRUD上,下面我们就基于前文搭建的标准企业级Spring Boot项目为奠基,整合Mybatis,并实现最基本的CRUD。

在开始开发之前,我们需要在数据库创建一个数据库表artile,即文章表,其数据库建表语句DDL如下所示:

CREATE TABLE `article` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '文章标题',
  `user_id` int(11) DEFAULT NULL COMMENT '作者',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章';

完了之后,采用Mybatis逆向工程生成该数据库表对应的实体类Entity、Mapper操作接口、Mapper操作接口对应的动态Sql配置文件mapper.xml。其对应的代码,各位小伙伴可以自行check下来进行查看。

在此之前,需要新建一个ArticleController、IArticleService接口以及ArticleService实现类!

一、新增与修改

(1)对于新增跟修改而言,其实主要有三点需要注意,第一点是前端提交过来的请求参数的校验;第二点是查询是否有新增了相同字段信息的记录;最后一点则是直接执行“新增逻辑”。其Controller对应的代码如下所示:

@RestController
@RequestMapping("article")
public class ArticleController extends AbstractController{
    @Autowired
    public IArticleService articleService;
    //新增
    @RequestMapping(value = "save",method = RequestMethod.POST)
    public BaseResponse save(@RequestBody @Validated Article article, BindingResult result){
        String error=ValidatorUtil.checkResult(result);
        if (StringUtils.isNotBlank(error)){
            return new BaseResponse(StatusCode.Fail.getCode(),error);
        }
        BaseResponse response=new BaseResponse(StatusCode.Success);
        try {
            Integer id=articleService.saveEntity(article);
            response.setData(id);
        }catch (Exception e){
            response=new BaseResponse(StatusCode.Fail.getCode(),e.getMessage());
        }
        return response;
    }
    //更新
    @RequestMapping(value = "update",method = RequestMethod.POST)
    public BaseResponse update(@RequestBody @Validated Article article, BindingResult result){
        String error=ValidatorUtil.checkResult(result);
        if (StringUtils.isNotBlank(error)){
            return new BaseResponse(StatusCode.Fail.getCode(),error);
        }
        if (article.getId()==null || article.getId()<=0){
            return new BaseResponse(StatusCode.InvalidParams);
        }
        BaseResponse response=new BaseResponse(StatusCode.Success);
        try {
            articleService.updateEntity(article);
        }catch (Exception e){
            response=new BaseResponse(StatusCode.Fail.getCode(),e.getMessage());
        }
        return response;
}
}