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中需要加入依赖包:

<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.3.1.tmp</version>
</dependency>

 

MyBatis-Plus的使用:

CRUD接口的使用

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

Mapper代码:

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

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

public interface TSysUserDAO extends BaseMapper<TSysUserBO> {

    /**
    * 根据查询参数分页查询
    * @author      
    * @date        
    */
    @SelectProvider(type = TSysUserProvider.class,method = "getSysUserForPage")
    List<TSysUserDTO> 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<String, String> 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<TSysUserBO> 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<String, String> 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<String, String> 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自动生成代码工具的配置

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值