MyBatis-Plus 学习 : 代码生成器(最新)(五)

一、引入依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>最新版本</version>
</dependency>

备注:这里mybatis-plus-generator的最新版本是3.5.2。 

使用

快速生成

FastAutoGenerator.create("url", "username", "password")
    .globalConfig(builder -> {
        builder.author("baomidou") // 设置作者
            .enableSwagger() // 开启 swagger 模式
            .fileOverride() // 覆盖已生成文件
            .outputDir("D://"); // 指定输出目录
    })
    .packageConfig(builder -> {
        builder.parent("com.baomidou.mybatisplus.samples.generator") // 设置父包名
            .moduleName("system") // 设置父包模块名
            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://")); // 设置mapperXml生成路径
    })
    .strategyConfig(builder -> {
        builder.addInclude("t_simple") // 设置需要生成的表名
            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
    })
    .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
    .execute();

交互式生成

FastAutoGenerator.create(DATA_SOURCE_CONFIG)
    // 全局配置
    .globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称?")).fileOverride())
    // 包配置
    .packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名?")))
    // 策略配置
    .strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
                        .controllerBuilder().enableRestStyle().enableHyphenStyle()
                        .entityBuilder().enableLombok().addTableFills(
                                new Column("create_time", FieldFill.INSERT)
                        ).build())
    /*
        模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
       .templateEngine(new BeetlTemplateEngine())
       .templateEngine(new FreemarkerTemplateEngine())
     */
    .execute();


// 处理 all 情况
protected static List<String> getTables(String tables) {
    return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}

 代码示例:


public class MybatisPlusCodeAutoGeneration {

	private static final String URL = "jdbc:mysql://localhost:3306/hdg";
	private static final String USERNAME = "root";
	private static final String PASSWORD = "vagrant";

	/**
	 * 自动生成代码输出目录,这里默认类路径下的src/test/java/com/universe包下,即当前工程的test目录下。
	 */
	private static final String OUTPUT_DIR = System.getProperty("user.dir") + File.separator + "src/test/java/com/universe";

	public static void main(String[] args) {
		FastAutoGenerator.create(URL, USERNAME, PASSWORD)
			// 开启fileOverrride重新旧文件,disableOpenDir禁用代码生成后打开输出目录对话框
			.globalConfig(builder -> builder.author("liuyalou").fileOverride().disableOpenDir().outputDir(OUTPUT_DIR))
			// parent指定生成的代码在哪个包下,entity可以指定实体(DO)所在的包名
			.packageConfig(builder -> builder.parent("com.universe").entity("pojo.domain"))
			// addInclude指定包含的表名,不调用该方法默认为所有表生成代码;addTablePrefix可以过滤表前缀,即t_user变成user
			.strategyConfig(builder -> builder.addInclude("t_user").addTablePrefix("t_")
				// 禁用为实体类生成序列化ID;formatFileName格式化生成的实体类名称,即t_user -> UserDO
				.entityBuilder().disableSerialVersionUID().formatFileName("%sDO")
				// formatMapperFileName格式化Mapper接口名称,即t_user -> UserMapper
				// formatXmlFileName格式化Mapper.xml文件名称,即t_user -> UserMapper.xml
				.mapperBuilder().formatMapperFileName("%sMapper").formatXmlFileName("%sMapper")
				.build()
			)
			// MyBatis-Plus代码生成器是通过模板引擎来渲染文件的,默认模板引擎是Velocity,根据依赖我们使用Freemarker
			.templateEngine(new FreemarkerTemplateEngine())
			.execute();
	}

}

猜你喜欢

转载自blog.csdn.net/weixin_42188778/article/details/125126693