版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://blog.csdn.net/sun8112133/article/details/106917503
本篇博客主要向大家介绍 MyBatis Plus 的一种自动化代码生成方案,这种方案叫做 逆向工程(MyBatis Plus Generator),MP 逆向工程 比 MyBatis 逆向工程好用的多,能够自动生成实体类、Mapper、Service、ServiceImpl、Controller,它可以根据 Velocity 模板来生成实体类及各种组件。
本篇博客以一个小案例给大家讲解 MP 逆向工程 。
一、引入依赖
在
pom.xml
中导入 MyBatis Plus Generator 依赖,还需要同时引入 Velocity 依赖,因为 Velocity 是 MP 默认的模板引擎,所以需要一同引入。
<!-- MyBatis Plus Generator 依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<!-- Velocity 依赖 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
二、启动类
通过运行启动类就能自动生成所需要各种组件。
其中
System.getProperty(“user.dir”);
这句话的作用是获取用户当前的工作目录。
public static void main(String[] args) {
// 创建 generator 对象(生成的对象)
AutoGenerator autoGenerator = new AutoGenerator();
// 数据源
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL);
dataSourceConfig.setUrl("jdbc:mysql:///demo?useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("123456");
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
autoGenerator.setDataSource(dataSourceConfig);
// 全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java"); // 设置生成的目录
globalConfig.setOpen(false); // 生成成功后不会自动打开这个文件夹
globalConfig.setAuthor("demo"); // 生成的作者
globalConfig.setServiceName("%sService"); // Service接口去掉前面的I
autoGenerator.setGlobalConfig(globalConfig);
// 包信息
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.demo"); // 设置父包
packageConfig.setModuleName("generator");
packageConfig.setController("controller");
packageConfig.setService("service");
packageConfig.setServiceImpl("serviceImpl");
packageConfig.setMapper("mapper");
packageConfig.setEntity("entity");
autoGenerator.setPackageInfo(packageConfig);
// 配置策略
StrategyConfig strategyConfig = new StrategyConfig();
// strategyConfig.setInclude("t_user"); // 要生成的表名
strategyConfig.setEntityLombokModel(true); // 自动添加 Lombok 注解
strategyConfig.setNaming(NamingStrategy.underline_to_camel); // 数据库表映射到实体的命名策略,下划线转驼峰命名
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel); // 数据库表字段映射到实体的命名策略,下划线转驼峰命名
autoGenerator.setStrategy(strategyConfig);
// 执行
autoGenerator.execute();
}