springboot+ MyBatis-Plus 项目搭建

在最近开发的项目中发现了MyBatis-Plus这款工具,MyBatis-Plus在包含了mybatis的所有功能上加强了对表的CURD操作,尤其对单表操作(联合查询方面还没研究透),并且带有比较完善的代码自动生成工具,大大提高了代码的开发效率.

官网:MyBatis-Plus官方网站  ,里面有比较详细的文档介绍.

今天主要来说下springboot项目中如何搭建 MyBatis-Plus 

环境:springboot 2.2.6 + JDK1.8 + apache-maven 3.5.4

首先POM..xml中需要加入依赖包:


			com.baomidou
			mybatis-plus-boot-starter
			3.3.1.tmp

 

MyBatis-Plus的使用:

CRUD接口的使用

MyBatis-Plus的CRUD接口主要涵盖Service CRUD 接口 和 Mapper CRUD 接口两个方面的功能.因为当前项目为CS架构的,调用的接口由socket发送过来,所以我Service没有使用MyBatis-Plus提供的接口,而是在Mapper层使用的.

Mapper代码:

Mapper层使用方法主要是让你的Mapper(DAO) 继承 BaseMapper 就可以了.

BaseMapper 包含了众多CRUD的操作接口,这里就不展示了,有兴趣的可以打开源码查看或者查阅官网文档.

public interface TSysUserDAO extends BaseMapper {

    /**
    * 根据查询参数分页查询
    * @author      
    * @date        
    */
    @SelectProvider(type = TSysUserProvider.class,method = "getSysUserForPage")
    List getSysUserForPage(TSysUserBO sysUserBO, Page page);

    /**
    * 根据查询参数统计所有数据
    * @author      
    * @date        
    */
    @SelectProvider(type = TSysUserProvider.class,method = "countSysUser")
    int countSysUser(TSysUserBO sysUserBO);


}

然后在Service层就可以使用了.这里分页我使用了自己的接口(因为涉及到的业务以及多表联合查询)

Service层代码:

service层代码分页的我就不复制了,这里就贴上我Mapper层没有写的增加 修改 和删除的代码吧

@Override
    public ReturnDTO addSysUser(Map params) {
        //获取参数
        TSysUserBO sysUserBO = JSON.parseObject(JSON.toJSONString(params),TSysUserBO.class);

        //判断参数
        if(StringUtil.isNull(sysUserBO.getSysAccount()) || StringUtil.isNull(sysUserBO.getUserName()) || StringUtil.isNull(sysUserBO.getUserType()) ||
                StringUtil.isNull(sysUserBO.getUserRole())) {
            return ReturnDTO.builder().returnMsg(Status.PARAM_ERROR.getMessage()).returnStatus(Status.PARAM_ERROR.getCode()).data(false).build();
        }

        //查重,如果用户名重复则提示错误信息
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.eq("SYS_ACCOUNT",sysUserBO.getSysAccount());
        int checkCnt = sysUserDAO.selectCount(wrapper);
        if(checkCnt > 0 ) {
            return ReturnDTO.builder().returnMsg(Status.SYS_ACCOUNT_EXCEPTION.getMessage()).returnStatus(Status.SYS_ACCOUNT_EXCEPTION.getCode())
                    .data(false).build();
        } else {
            int cnt = sysUserDAO.insert(sysUserBO);
            if(cnt > 0) {
                return ReturnDTO.builder().returnMsg(Status.SUCCESS.getMessage()).returnStatus(Status.SUCCESS.getCode())
                        .data(true).build();
            } else {
                return ReturnDTO.builder().returnMsg(Status.FAIL.getMessage()).returnStatus(Status.FAIL.getCode())
                        .data(false).build();
            }
        }
    }

    @Override
    public ReturnDTO updateSysUser(Map params) {
        //获取参数
        TSysUserBO sysUserBO = JSON.parseObject(JSON.toJSONString(params),TSysUserBO.class);


        int cnt = sysUserDAO.updateById(sysUserBO);
        if(cnt > 0) {
            return ReturnDTO.builder().returnMsg(Status.SUCCESS.getMessage()).returnStatus(Status.SUCCESS.getCode())
                    .data(true).build();
        } else {
            return ReturnDTO.builder().returnMsg(Status.FAIL.getMessage()).returnStatus(Status.FAIL.getCode())
                    .data(false).build();
        }
    }


    @Override
    public ReturnDTO deleteSysUser(Map params) {
        //获取参数
        TSysUserBO sysUserBO = JSON.parseObject(JSON.toJSONString(params),TSysUserBO.class);
        //逻辑删除,将删除状态改变
        sysUserBO.setDr(1);
        //TODO 记录修改人等信息
        //因为我这是逻辑删除所以调用的是修改方法,如果是删除的话可以使用 deleteById方法
        int cnt = sysUserDAO.updateById(sysUserBO);
        if(cnt > 0) {
            return ReturnDTO.builder().returnMsg(Status.SUCCESS.getMessage()).returnStatus(Status.SUCCESS.getCode())
                    .data(true).build();
        } else {
            return ReturnDTO.builder().returnMsg(Status.FAIL.getMessage()).returnStatus(Status.FAIL.getCode())
                    .data(true).build();
        }
    }

从上面的代码可以看出,selectCount ,insert,updateById,deleteById 这些方法自己并不需要实现就可以使用了.在使用的过程中需要注意的就是条件选择器的选择.我这里主要用的是两种,一种查询的QueryWrapper,和修改的 UpdateWrapper.

下一章将介绍Mybatis-Plus自动生成代码的工具配置:MyBatis-Plus自动生成代码工具的配置

更多功能请查阅官方文档.

 

你可能感兴趣的:(JAVA,MyBatis-Plus)