mybatis plus自动生成业务代码(controller,service,entity,mapper)

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-generator</artifactId>
  <version>3.3.0</version>
 <!--注意3.3.0不支持正则匹配,比如我想生成数据库中以t_yckj_开头的表对应的代码
 如下写在3.3.0下无效,只能一个表一个表的去跑代码 --> 
 // StrategyConfig strategy = new StrategyConfig();
 // strategy.setInclude("t_yckj_\\w*")
</dependency>
<!-- velocity 模板引擎, Mybatis Plus 代码生成器需要,还有其他的模板引擎,具体参照官网,注意网络
环境,如果maven下载jar包失败,会导致自动生成代码时报错,报ClassNotFound -->
<dependency>
  <groupId>org.apache.velocity</groupId>
  <artifactId>velocity-engine-core</artifactId>
  <version>2.0</version>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <!--<version>5.1.47</version>-->
  <version>8.0.18</version>
</dependency>
<!--<dependency>-->
      <!--<groupId>com.baomidou</groupId>-->
      <!--<artifactId>mybatis-plus-boot-starter</artifactId>-->
      <!--<version>3.0.5</version>-->
  <!--</dependency>-->
  // 如果mybatis-plus-boot-starter是3.0.5这个版本,引入这一个依赖会自动添加mybatis-plus-generator依赖,如果是
  // 其他的版本比如3.3.0这个版本就不会自动添加mybatis-plus-generator这个依赖,需要手动添加,否则会找不到AutoGenerator
  // 这个类

自动生成代码类

public class TestGenerator {
 public static void main(String[] args) {
  // 模块名 product
  String moduleName = "product";

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

  // 2. 全局配置
  GlobalConfig gc = new GlobalConfig();
  //获取项目目录
  String projectPath = System.getProperty("user.dir");
  gc.setOutputDir(projectPath + "/src/main/java");
  // 文档注释 作者名
  gc.setAuthor("Mr.ZhangSan");
  // 是否打开资源管理器
  gc.setOpen(false);

  // 重新生成文件的时候是否覆盖
  gc.setFileOverride(true);
  // 去掉接口的首字母I
  gc.setServiceImplName("%sService");
  // 主键策略
  gc.setIdType(IdType.AUTO);
  // 定义生成的实体类中的日期类型
  gc.setDateType(DateType.ONLY_DATE);
  // 实体属性 Swagger2 注解
  gc.setSwagger2(true);

  mpg.setGlobalConfig(gc);
  
  // 3、 数据源配置
  DataSourceConfig dsc = new DataSourceConfig();
  dsc.setUrl("jdbc:mysql://localhost:3366/yckj_db?autoReconnect=true&useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true");
  // mysql 驱动为5.x时的driverName
  // dsc.setDriverName("com.mysql.jdbc.Driver");
  // mysql 驱动为8.x时的driverName
  dsc.setDriverName("com.mysql.cj.jdbc.Driver");
  dsc.setUsername("root");
  dsc.setPassword("123456");
  // 设置数据库类型(可选) 可以根据驱动自动推断
  dsc.setDbType(DbType.MYSQL);

  mpg.setDataSource(dsc);

  // 4、包配置
  PackageConfig pc = new PackageConfig();
  //模块名 :com.test.product
  pc.setModuleName(moduleName);
  pc.setParent("com.test");
  // 最终的包名称  com.test.product.controller,其他类似
  pc.setController("controller");
  pc.setMapper("mapper");
  pc.setService("service");
  pc.setEntity("entity");

  mpg.setPackageInfo(pc);

  //5、 策略配置
  StrategyConfig strategy = new StrategyConfig();
  //设置要映射的表名
  strategy.setInclude("t_yckj_\\w*");
  // 数据库表映射到实体类的命名策略
  strategy.setNaming(NamingStrategy.underline_to_camel);
  //代表前缀不生成
  strategy.setTablePrefix("t_yckj_");
  //链式编程
  strategy.setEntityLombokModel(true);
  // 数据库列映射到实体类的命名策略
  strategy.setColumnNaming(NamingStrategy.underline_to_camel);
  //逻辑删除字段
  strategy.setLogicDeleteFieldName("deleted");
  //去掉布尔值的 is_ 前缀
  strategy.setEntityBooleanColumnRemoveIsPrefix(true);

  // 自动填充,策略
  TableFill gmtCreate = new TableFill("create_time", FieldFill.INSERT);
  TableFill gmtModified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
  ArrayList<TableFill> tableFills = new ArrayList<>();
  tableFills.add(gmtCreate);
  tableFills.add(gmtModified);

  strategy.setTableFillList(tableFills);

  // 乐观锁
  strategy.setVersionFieldName("version");
  // restful api风格
  strategy.setRestControllerStyle(true);
  // URL中驼峰转连字符  addProduct add-product
  strategy.setControllerMappingHyphenStyle(true);

  mpg.setStrategy(strategy);

  // 执行代码生成器
  mpg.execute();
 }
}

mybatis plus自动生成业务代码(controller,service,entity,mapper)_第1张图片

你可能感兴趣的:(springboot)