MybatisPlus也提供了代码生成器,并且更加厉害,能直接生成controller、service、mapper、xml等,并且还支持各种配置。
点击下面阅读原文可访问官网:
https://mp.baomidou.com/guide/generator-new.html
今天来搭建一个MybatisPlus Generator工具项目。
一、引入pom依赖
<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version><relativePath/></parent><groupId>com.xing</groupId><artifactId>springBootMybatisPlusGenerator</artifactId><version>0.0.1-SNAPSHOT</version><name>springBootMybatisPlusGenerator</name><description>MybatisPlusGeneratorDemoprojectforSpringBoot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.4</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.15</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.3</version></dependency><dependency><groupId>org.realityforge.org.jetbrains.annotations</groupId><artifactId>org.jetbrains.annotations</artifactId><version>1.7.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build></project>
我是用的是5天前出来的最新版本3.5.1,这个是一个分界线,历史版本的使用和3.5.1以后版本的使用不一样,详情可看官网。
二、直接上代码:
packagecom.xing.springBoot.mybatisPlus.generator; importcom.baomidou.mybatisplus.generator.AutoGenerator; importcom.baomidou.mybatisplus.generator.config.*; importcom.baomidou.mybatisplus.generator.config.builder.ConfigBuilder; importcom.baomidou.mybatisplus.generator.config.rules.DateType; importjava.time.LocalDateTime; importjava.time.format.DateTimeFormatter; /*** 生成器*/publicclassMybatisPlusGenerator { publicstaticvoidmain(String[] args) { Stringurl="jdbc:mysql://localhost:3306/xinghua?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC"; // 新建数据源DataSourceConfigdataSourceConfig=newDataSourceConfig.Builder(url,"root","root").build(); // 获取项目路径StringprojectPath=System.getProperty("user.dir"); System.out.println("项目路径:->"+projectPath); // 全局配置GlobalConfigglobalConfig=newGlobalConfig.Builder() .author("x")//作者 .outputDir(projectPath+"/src/main/java")//文件输出路径 .disableOpenDir()//禁止打开输出目录 不禁用的话在生成完毕后自动打开你项目路径下文件夹 .commentDate("yyyy-mm-dd")//指定注释日期格式化 .commentDate(LocalDateTime.now().format(DateTimeFormatter.ISO_DATE)) // 也是注释日期//数据库时间类型到实体类时间类型 ,三种模式:1.ONLY_DATE-只使用 java.util.date 代替 2.SQL_PACK-使用 java.sql 包下的 3.默认TIME_PACK使用 java.time 包下的java8 新的时间类型 .dateType(DateType.TIME_PACK) // .enableKotlin()//开启 kotlin 模式// .enableSwagger()//开启 swagger 模式 直接在实体上生成swagger的API注解 .fileOverride()//覆盖已有文件// .openDir(false) .build(); // 包相关的配置项PackageConfigpackageConfig=newPackageConfig.Builder() .moduleName("generator")//指定模块名称 .parent("com.xing.springBoot.mybatisPlus")//指定父包名 .controller("controller")//默认就是controller 一般不用设置 .entity("model") .service("service") .serviceImpl("service.impl") .mapper("mapper") .other("other")//指定自定义文件包名 .xml("mapper.xml")//指定xml包名 .build(); // 策略配置项StrategyConfigstrategyConfig=newStrategyConfig.Builder() .addTablePrefix("t_")//增加表前缀// .addTableSuffix("")//增加表后缀 .addFieldPrefix("c_")//增加字段前缀 .addFieldSuffix()//增加过滤字段后缀// .addInclude("")//增加包含的表名 include和addExclude 只有存在一个 .addExclude("test")//增加排除表 .disableSqlFilter()//禁用sql过滤 .enableSkipView()//开启跳过视图 .build(); TemplateConfigtemplateConfig=newTemplateConfig.Builder() .disable(TemplateType.ENTITY) .entity("/templates/entity.java") .service("/templates/service.java") .serviceImpl("/templates/serviceImpl.java") .mapper("/templates/mapper.java") .mapperXml("/templates/mapper.xml") .controller("/templates/controller.java") .build(); // 注入配置InjectionConfiginjectionConfig=newInjectionConfig.Builder().build(); //特么的 这个AutoGenerator还没有加上注入templateConfig的方法ConfigBuilderconfigBuilder=newConfigBuilder(packageConfig, dataSourceConfig, strategyConfig, templateConfig, globalConfig, injectionConfig); //自动生成AutoGeneratorautoGenerator=newAutoGenerator(dataSourceConfig) // .global(globalConfig)// .strategy(strategyConfig)// .packageInfo(packageConfig); .config(configBuilder); autoGenerator.execute(); } }
通过源码可以看到主要执行的是AutoGenerator 自动生成类,然后将一些配置类实例注入到生成类,达到配置的目的。
三、运行结果
确实很好啊!连controller都自动建立了呢!
官网对属性做了简单的注释:
用的时候去官网查看吧:
https://mp.baomidou.com/guide/generator-new.html
总结:
MybatisPlus Generator代码生成器最新版本3.5.1根据数据库表生成代码,新版本添加了Builder方式来配置,别用3.5.0哈,那个版本没法完成数据库的下划线分割映射驼峰命名法命名。
END