Mybatis-Plus Generator代码自动生成工具体验

Mybatis-Plus Generator代码自动生成工具体验_第1张图片

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

1.导入依赖 ,需要引用的依赖如下


     com.baomidou
     mybatis-plus-generator
     3.4.0

 

     org.apache.velocity
     velocity-engine-core
      2.3



     mysql
     mysql-connector-java
     8.0.26
     runtime




     ch.qos.logback
     logback-classic
     1.2.6
     test


<-- 
     org.slf4j
     slf4j-simple
     2.0.0-alpha5
      test
 -->

 2.编写工具类

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
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.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.ArrayList;

/**
 * mybatis-plus代码自动生成器
 */
public class MyAutoGenerator {

    // 数据库链接参数
    private static String DriverClassName = "com.mysql.cj.jdbc.Driver";
    private static String UserName = "root";
    private static String PassWord = "root";
    private static String Url = "jdbc:mysql://127.0.0.1:3306/blogs?characterEncoding=UTF-8&serverTimezone=UTC";

    public static void main(String[] args) {
        // 1.构建代码生成器对象
        AutoGenerator ag = new AutoGenerator();
        // 配置策略
        // 1.1 配置数据源
        DataSourceConfig ds = new DataSourceConfig();
        // 设置数据库类型 如果是其他数据库类型此处需要修改
        ds.setDbType(DbType.MYSQL);
        ds.setDriverName(DriverClassName);
        ds.setUsername(UserName);
        ds.setUrl(Url);
        ds.setPassword(PassWord);
        ag.setDataSource(ds);

        //1.2 全局配置
        GlobalConfig gc = new GlobalConfig();
        //设置生成的文件输出的父目录为当前项目的src/main/java
        gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
        //设置作者
        gc.setAuthor("MonsterX");
        // 生成swagger2注解
        gc.setSwagger2(true);
        // 文件已存在是否覆盖
        gc.setFileOverride(false);
        // 不打开生成的文件输出目录
        gc.setOpen(false);
        // 设置ID生成策略
        gc.setIdType(IdType.ASSIGN_ID);
        // service生成比如表名是user 那么生成的就是UserService
        gc.setServiceName("%sService");
        // 使用java.util包下的date
        gc.setDateType(DateType.ONLY_DATE);
        ag.setGlobalConfig(gc);

        //1.3 包的配置
        PackageConfig pc = new PackageConfig();
        // 父包名 src/main/java 目录下的包名 src/main/java/com/monstor
        pc.setParent("com.monster");
        // 父包模块名称 src/main/java/com/monstor/blog
        pc.setModuleName("blog");
        // controller包名 src/main/java/com/monstor/blog/controller
        // 不设置 默认就是controller
        pc.setController("controller");
        // entity包名 src/main/java/com/monstor/blog/pojo
        // 不设置 默认就是entity
        pc.setEntity("pojo");
        // mapper接口包名 src/main/java/com/monstor/blog/mapper
        // 不设置 默认就是mapper
        pc.setMapper("mapper");
        // service接口包名 src/main/java/com/monstor/blog/service
        // 不设置 默认就是service
        pc.setService("service");
        // serviceImpl包名 src/main/java/com/monstor/blog/service/impl
        // 不设置 默认就是service包下面的impl包
        pc.setServiceImpl("service.impl");
        ag.setPackageInfo(pc);

        // 1.4策略配置
        StrategyConfig sc = new StrategyConfig();
        // 设置要生成的表,多个以逗号隔开
        sc.setInclude("comments", "system_info");
        // 字段名称开启驼峰命名
        sc.setColumnNaming(NamingStrategy.underline_to_camel);
        // 表名开启驼峰命名
        sc.setNaming(NamingStrategy.underline_to_camel);
        // 开启lombok支持
        sc.setEntityLombokModel(true);
        // 设置逻辑删除字段 如果表中没有该字段 不设置
        sc.setLogicDeleteFieldName("deleted");
        // 自动填充配置 如果表中没有这些字段会跳过 不影响使用 也可以不配置
        TableFill gmtCreate = new TableFill("create_time", FieldFill.INSERT);
        TableFill gmtmodified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
        ArrayList tableFills = new ArrayList<>();
        tableFills.add(gmtCreate);
        tableFills.add(gmtmodified);
        sc.setTableFillList(tableFills);
        // 乐观锁字段 如果表中没有这些字段会跳过 不影响使用 也可以不配置
        sc.setVersionFieldName("version");
        // 使用@RestController
        sc.setRestControllerStyle(true);
        // 开启驼峰转连接符 @RequestMapping("/managerUserActionHistory") ---> @RequestMapping("/manager-user-action-history")
        sc.setControllerMappingHyphenStyle(true);
        ag.setStrategy(sc);

        ag.execute();
    }
}

3.生成工具中需要修改的地方

1>.数据库的配置需要修改成你自己要连的数据库.

2>.全局配置中基本上就是修改一下作者就可以了,ID的生成策略上面配置的是ASSIGN_ID(全局唯一),内部使用雪花算法生成.如果需要修改,可以下源码查看其他策略.

3>.包的配置需要修改父包名以及父包模块名称,实体类的包名也可以修改成你习惯的,其余的可以不设置,都是有默认值的.需要修改才设置.

4>.策略的配置比较麻烦,主要修改的有要映射的表名,其余的采用默认配置就可以.如果有逻辑删除字段,或者需要自动填充配置(比如创建时间,修改时间之类的字段) 需要手动设置一下.
 

需要注意的的是我们上面生成代码的时候开启了swagger2的支持,lombok支持,还有一些spring的注解,如果没有依赖这些包,依然是能够生成成功的,只不过是生成出来的代码会报错,找不到依赖.再导入依赖就可以了

Mybatis-Plus Generator代码自动生成工具体验_第2张图片

 还需要注意的是,如果数据库的字段没有注释,那么生成的实体类上就不会有swagger的注解,所以尽量给数据库字段都加上注释.

  

Mybatis-Plus Generator代码自动生成工具体验_第3张图片 

生成的代码结构如下:

Mybatis-Plus Generator代码自动生成工具体验_第4张图片

这里的mapper.xml没法配置到resourses目录下面去,生成在mapper目录下,需要手动移到resources目录下.

这里的报错是因为我新建的一个maven项目来演示,所以只依赖了上面导入的几个依赖,没有导入spring,lombok和swagger相关的依赖.

 mybatis-plus代码生成器在3.5.1+版本不适用上面的生成代码,具体查看官方文档代码生成器(3.5.1+版本) | MyBatis-Plus为简化开发而生https://mp.baomidou.com/guide/generator-new.html

你可能感兴趣的:(MYBATIS,java)