引入pom.xml依赖
com.baomidou mybatis-plus-boot-starter 3.4.2 com.baomidou mybatis-plus-generator 3.5.2 org.mybatis.generator mybatis-generator-maven-plugin 1.4.1
package com.common.demo.utils; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.OutputFile; import com.baomidou.mybatisplus.generator.config.rules.DateType; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class CodeGenerator { public static void main(String[] args) { String url = "jdbc:mysql://localhost/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8"; String username = "root"; String password = "123456"; //表名集合 Listtables = new ArrayList<>(); tables.add("user"); tables.add("menu"); tables.add("guest"); FastAutoGenerator.create(url, username, password) //全局配置 .globalConfig(builder -> { // builder.fileOverride() // 开启覆盖之前生成的文件 builder .disableOpenDir() //禁止打开输出目录 .outputDir(System.getProperty("user.dir") + "\src\main\java") //指定输出目录 .author("hwj") //作者名 // .enableKotlin() //开启 kotlin 模式 .enableSwagger() //开启 swagger 模式 .dateType(DateType.TIME_PACK) //时间策略 .commentDate("yyyy-MM-dd"); //注释日期 }) //包配置 .packageConfig(builder -> { builder.parent("com.common.demo") //父包名 .entity("entity") //Entity 包名 .service("service") // Service 包名 .serviceImpl("service.impl") //Service Impl 包名 .mapper("mapper") //Mapper 包名 .xml("mapper.xml") // Mapper XML 包名 .controller("controller") //Controller 包名 .other("config") //自定义文件包名 输出自定义文件时所用到的包名 .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "\src\main\resources\mapper"));//指定xml位置 }) //策略配置 .strategyConfig(builder -> { builder.addInclude(tables) .addTablePrefix("")//表名前缀,配置后生成的代码不会有此前缀 .serviceBuilder() .formatServiceFileName("%sService")//服务层接口名后缀 .formatServiceImplFileName("%sServiceImpl")//服务层实现类名后缀 .entityBuilder() .enableLombok()//实体类使用lombok,需要自己引入依赖 .logicDeleteColumnName("status")//逻辑删除字段,使用delete方法删除数据时会将status设置为1。调用update方法时并不会将该字段放入修改字段中,而是在条件字段中 .enableTableFieldAnnotation()//加上字段注解@TableField .controllerBuilder() .formatFileName("%sController")//控制类名称后缀 .enableRestStyle() .mapperBuilder() .superClass(BaseMapper.class) .formatMapperFileName("%sMapper") .enableMapperAnnotation() .formatXmlFileName("%sMapper"); }) .execute(); } }
项目结构: