SpringBoot集成MybatisPlus

祝你前程似锦,在初春,在夏至,在秋末,在冬深

一、前言:

MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

二、集成

在我们项目中,用到最多的ORM框架就是Mybatis了,但是相对于Mybtais,我们可以有一个更好的选择:Mybatis-plus
1、依赖如下:

        
            org.springframework.boot
            spring-boot-starter-web
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.3.1.tmp
        
        
        
            mysql
            mysql-connector-java
            8.0.15
        
        
            org.projectlombok
            lombok
            true
        

2、对应的数据库表:

CREATE TABLE `tb_user` (
  `id` bigint(20) NOT NULL,
  `name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3、application配置

spring.datasource.url=jdbc:mysql:///spring-boot?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=password
logging.level.indi.zhaosheng.mybatis.plus.dao=debug

4、数据库表对应的对象(这里称为Po)

@TableName("tb_user")
@Setter
@Getter
public class UserPo {
    private Long id;
    private String name;
}

5、DAO

public interface UserMapper extends BaseMapper {
}

6、Service

public interface UserService {
}
******************************************************************
@Service
public class UserServiceImpl implements UserService {

    private IService userPoService;

    public UserServiceImpl(UserMapper userMapper) {
        this.userPoService = new BaseServiceImpl<>(userMapper, UserPo.class);
    }

}

三、自定义

我们可以看到,在上面的Service里,通过构造函数new了一个BaseServiceImpl的userPoService;在MybatisPlus里,普通情况是每个Po都会有个Service继承ServiceImpl的,这样去操作ServiceImpl提供的batch方法时,就可以获取到操作的对象的类型。这里做了一个简化,即通过泛型构造PoService。

public class BaseServiceImpl, T> extends ServiceImpl {

    /**
     * 

* 这里继承了mp提供的一个ServiceImpl类, * 通过CodeGenerator生成的代码里, * 每个Po(即与数据库表映射的对象)都会生成一个泛型为Po的Service, * 这个Service的作用是确定ServiceImpl操作的对象类型, * 个人感觉没有必要,可以通过下面的方式指定对象类型, * 不指定的话,batch操作会抛异常(Error: Cannot execute table Method, ClassGenricType not found .), * 找不到对应的对象类型 * 使用示例见{@link indi.zhaosheng.mybatis.plus.service.impl.UserServiceImpl#UserServiceImpl(UserMapper)} *

* * @param mapper * @param clz * @return * @auther muluo */ public BaseServiceImpl(M mapper, Class clz) { this.baseMapper = mapper; this.entityClass = clz; } }

好了,以上就是SpringBoot集成MybatisPlus的全部内容了,很简单,单可用。涉及到的具体的操作并没有在这里列出来,因为官网上已经有了很多的示例了。准备下次肝一下MP的具体操作的流程,梳理清楚里面的逻辑,以及具体的sql是如何生成的。

你可能感兴趣的:(SpringBoot集成MybatisPlus)