摘要:本文我们将回归介绍、分享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;
}
}