代码生成器
MyBatis Plus是MyBatis的扩展框架,而代码生成器是MP的核心功能之一,另外还有 “条件构造器”和“通用CRUD”等功能。
步骤演示
mp的代码生成器有两种方式自动生成代码,一种是通过main方法来执行程序,另一种是通过maven插件build产生。第二种方法需要在pom.xml中添加大量的配置信息,因此本人偏向于使用第一种方式。步骤如下:
一、添加mybatis plus依赖:
如果还没有创建项目,当然需要先创建一个工程项目,然后将jar包依赖添加到项目的classpath下,如果是含有pom.xml的maven项目,比如我最近在使用的springboot项目,那么可以直接添加pom依赖:
代码语言:javascript复制 <dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
二、创建生成器主类
官方给出的实例连接:代码生成器, 此处贴出我整理过后的代码:
代码语言:javascript复制package com.nanjustar.web.generator;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
/**
* <p>
* 代码生成器演示
* </p>
*/
public class MpGenerator {
/**
* <p>
* MySQL 生成演示
* </p>
*/
public static void main(String[] args) {
//1. 全局配置
GlobalConfig config = new GlobalConfig();
//是否支持AR模式
config.setActiveRecord(true)
.setAuthor("nanju") //作者
.setOutputDir("D:\File\nanjustar\nanjublog\nanjustar-web\src\main\java") //生成路径
.setFileOverride(true)//是否文件覆盖,如果多次
.setServiceName("%sService") //设置生成的service接口名首字母是否为I
.setIdType(IdType.AUTO) //主键策略
.setBaseResultMap(true)
.setBaseColumnList(true)
.setDateType(DateType.ONLY_DATE)
.setSwagger2(true);
//2. 数据源配置
DataSourceConfig dsConfig = new DataSourceConfig();
dsConfig.setDbType(DbType.MYSQL)
.setUrl("jdbc:mysql://127.0.0.1:3306/nanjublog?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai")
.setDriverName("com.mysql.cj.jdbc.Driver")
.setUsername("root")
.setPassword("root");
//3.策略配置
StrategyConfig stConfig = new StrategyConfig();
stConfig.setCapitalMode(true) // 全局大写命名
.setNaming(NamingStrategy.underline_to_camel)// 数据库表映射到实体的命名策略
.setColumnNaming(NamingStrategy.underline_to_camel)
.setInclude("tb_article") //生成的表
.setTablePrefix("tb_")
.setControllerMappingHyphenStyle(true)
.setEntityLombokModel(true)
.setRestControllerStyle(true); // 表前缀
//4.包名策略
PackageConfig pkConfig = new PackageConfig();
pkConfig.setParent("com.nanjustar")//父包名
.setController("controller")
.setEntity("entity")
.setService("service")
.setMapper("mapper")
.setServiceImpl("service.impl");
//5.整合配置
AutoGenerator ag = new AutoGenerator().setGlobalConfig(config)
.setDataSource(dsConfig)
.setStrategy(stConfig)
.setPackageInfo(pkConfig);
ag.execute();
}
}