MyBatisPlus----代码生成器

前言

这里所讲的代码生成器其实是Mybatis-Plus官方为我们提供的。
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

1. 如何编写一个代码生成器

[1] 在pom.xml中引入相关依赖 (这是一个基于Mybatis-plus的项目)
MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖:


<dependency>
    <groupId>com.baomidougroupId>
    <artifactId>mybatis-plus-generatorartifactId>
    <version>3.3.2version>
dependency>

<dependency>
   <groupId>org.apache.velocitygroupId>
   <artifactId>velocity-engine-coreartifactId>
dependency>
  
  <dependency>
       <groupId>org.projectlombokgroupId>
       <artifactId>lombokartifactId>
       <version>1.18.10version>
   dependency>

若想使用其他的模板引擎可参考官方文档:MyBatis-Plus
[2] 编写生成器代码

package com.gs.test;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;

public class CodeGenerator {

    @Test
    public void run() {

        // 1、创建代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 2、全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir("F:\\IDEA代码\\在线教育\\service\\service_edu" + "/src/main/java"); //(路径的地方)
        gc.setAuthor("testjava");
        gc.setOpen(false); //生成后是否打开资源管理器
        gc.setFileOverride(false); //重新生成时文件是否覆盖
        gc.setServiceName("%sService");	//去掉Service接口的首字母I
        gc.setIdType(IdType.ID_WORKER_STR); //主键策略(查看是否为string或long)
        gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
        gc.setSwagger2(true);//开启Swagger2模式

        mpg.setGlobalConfig(gc);

        // 3、数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        //dsc.setPassword("root");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        // 4、包配置
        PackageConfig pc = new PackageConfig();

        //包: com.gs.eduService
        pc.setParent("com.gs");
        pc.setModuleName("eduService"); //模块名

        //包: com.gs.eduService.controller
        pc.setController("controller");
        pc.setEntity("entity");
        pc.setService("service");
        pc.setMapper("mapper");
        mpg.setPackageInfo(pc);

        // 5、策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setInclude("edu_teacher");  //(设置数据库中对应的表名)
        strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
        strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀

        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
        strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作

        strategy.setRestControllerStyle(true); //restful api风格控制器
        strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符

        mpg.setStrategy(strategy);


        // 6、执行
        mpg.execute();
    }
}

这里面需要自己修改的点如下:(其余的点可参照注释即可)

2.全局配置中的  gc.setOutputDir() 这里设置自己项目的路径即可
gc.setIdType(IdType.ID_WORKER_STR); //主键策略(若自己的主键类型是非String类型的改为IdType.ID_WORKER即可)
gc.setSwagger2(true);//开启Swagger2模式(若没有引入Swagger2不设置即可)
3、数据源配置设置自己的数据库配置即可
4. 包配置也可以自由更改自己的包名
5. 策略配置 strategy.setInclude("edu_teacher");  //(这里设置数据库中对应的表名,有多个表可以用,隔开)

[3] 测试效果
还没执行代码之前:
MyBatisPlus----代码生成器_第1张图片
执行后生成的代码
MyBatisPlus----代码生成器_第2张图片
我们可以打开几个代码进行查看
我们会发现:它帮我们把实体类, mapper, service的接口和实现类都编写了,Controller类只是书写了一个类名(主体得自己编写)
EduTeacher.class

package com.gs.eduService.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;

import com.baomidou.mybatisplus.annotation.TableLogic;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 

* 讲师 *

* * @author testjava * @since 2020-07-12 */
@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="EduTeacher对象", description="讲师") public class EduTeacher implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "讲师ID") @TableId(value = "id", type = IdType.ID_WORKER_STR) private String id; @ApiModelProperty(value = "讲师姓名") private String name; @ApiModelProperty(value = "讲师简介") private String intro; @ApiModelProperty(value = "讲师资历,一句话说明讲师") private String career; @ApiModelProperty(value = "头衔 1高级讲师 2首席讲师") private Integer level; @ApiModelProperty(value = "讲师头像") private String avatar; @ApiModelProperty(value = "排序") private Integer sort; @ApiModelProperty(value = "逻辑删除 1(true)已删除, 0(false)未删除") private Boolean isDeleted; @ApiModelProperty(value = "创建时间") private Date gmtCreate; @ApiModelProperty(value = "更新时间") private Date gmtModified; }

EduTeacherMapper.class

package com.gs.eduService.mapper;

import com.gs.eduService.entity.EduTeacher;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * 

* 讲师 Mapper 接口 *

* * @author testjava * @since 2020-07-12 */
public interface EduTeacherMapper extends BaseMapper<EduTeacher> { }
小结

MybatisPlus所提供的代码生成器确实简单易上手,而且大大提高了我们的开发效率

你可能感兴趣的:(项目Tips)