MyBatis-Plus 代码生成器的配置
为简化开发而生的Mybatis-Plus,作为一种Mybatis的增强工具,在 MyBatis 的基础上只做增强不做改变,确实给开发带来了不少的便利!其内置的代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置来满足各种个性化的开发使用,在这里,我只写一些代码生成器最基本的配置,以及对于一些官方代码使用的补充
在这里,我以Springboot工程来演示代码生成器
我使用的是Intellij IDEA的开发工具,JDK版本为1.8,使用内置的Spring Initializr来创建一个名为springboot-mybatisplus的Maven工程,在创建工程时,为满足代码生成器的使用,在搭建工程的时候,导入所需要的Dependences,如下图所示:(其中Lombok的使用看个人的使用需求)
其工程结构如下图所示:
为充分演示代码生成器的效果,在项目初次建立的时候就将java文件夹清空,以便观察。
根据MyBatis-Plus官方文档所言,从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖
所以,我们在pom文件dependences下面引入如下依赖,并刷新maven工程:
(个人习惯引入阿里巴巴的druid数据库连接池)
因为整体工程没有任何界面化,并且需要观察java文件夹下代码的生成的变化,所以代码生成器我放在了test/java目录下来进行生成,以下代码是对官方示例的代码生成器的一个解释和简化:
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
/**
* Created by IntelliJ IDEA.
*
* @author xiren
*/
public class TestGenerator {
//数据库连接参数
public static String driver = "com.mysql.cj.jdbc.Driver";
public static String url = "jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false";
public static String username="root";
public static String password="root";
// 父级别包名称(看个人创建的目录)
public static String parentPackage = "com.xiren";
// 代码生成的目标路径
public static String generateTo = "/src/main/java";
// mapper.xml的生成路径
public static String mapperXmlPath = "/src/main/resources/mapper";
// 控制器的公共基类,用于抽象控制器的公共方法,null值表示没有父类
public static String baseControllerClassName ;
// 业务层的公共基类,用于抽象公共方法
public static String baseServiceClassName ;
// 作者名
public static String author = "xiren";
// 模块名称,用于组成包名(这块看个人需要是否再加一级目录)
// public static String modelName = "portal";
// 执行 main 自动生成对应项目目录中
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
// 当前工程目录模块
String projectPath = System.getProperty("user.dir");
// 文件输出目录(generateTo为上面定义的路径)
gc.setOutputDir(projectPath + generateTo);
// 添加作者信息
gc.setAuthor(author);
//设置时间类型为Date
gc.setDateType(DateType.TIME_PACK);
// 生成文件后不默认打开
gc.setOpen(false);
// 自定义service生成的名字,用于删除自动生成的I前缀
gc.setServiceName("%sService");
// 实体属性 Swagger2 注解,在这里没有需求,就默认注释了
// gc.setSwagger2(true);
gc.setBaseResultMap(true);
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl(url);
// dsc.setSchemaName("public");
dsc.setDriverName(driver);
dsc.setUsername(username);
dsc.setPassword(password);
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
// pc.setModuleName(scanner("模块名"));
// 父模块,已在上方定义
pc.setParent(parentPackage);
// 各个包目录起名
pc.setEntity("entity");
pc.setMapper("dao");
pc.setService("service");
pc.setController("controller");
mpg.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
// 字段驼峰命名
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// strategy.setSuperEntityClass("你自己的父类实体,没有就不用设置!");
// 设置实体类的lombok(此处看个人使用,如果不使用lombok,那么在生成之后再去添加构造方法等等)
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
// 公共父类
// strategy.setSuperControllerClass("你自己的父类控制器,没有就不用设置!");
// 写于父类中的公共字段
// strategy.setSuperEntityColumns("id");
// scanner("表名,多个英文逗号分割").split(",")
strategy.setInclude(("backstage_account"));
// 驼峰生成方法
strategy.setControllerMappingHyphenStyle(true);
// 删除前缀
strategy.setTablePrefix("backstage_");
mpg.setStrategy(strategy);
// mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
}
在配置好这样一个generator后,我们直接运行,运行过程中控制台会执行一段生成文件的过程
当看到如下显示后便说明代码生成完成
=========================文件生成完成!!!==========================
Process finished with exit code 0
此时我们去看我们java的目录下面,就会有各种我们日常所需要的包生成出来,如下图:
显示至此,一个最基本最简单的代码生成器便完成了,当然这里生成的代码没有任何的功能包含在里面,实际的业务还需要自己去开发,但是确实要比我们自己一个个去建立包然后去写一个个java文件要快上不少,正如同Mybatis-Plus所说的效率至上,而Mybatis-Plus也提供了一些自定义的代码生成规则,包括可以生成带有CURD功能的整个后端系统,后面有机会我再去写一版更高级的自定义的代码生成器的文章,如果有兴趣的,想自己去研究的呢,这里我也帮你放好了Mybatis-Plus官方给你的自定义文档,可以去参考!
祝各位码上无ERROR,键盘无BUG!!