第一步:依赖
<dependencies>
<!-- 代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
</dependencies>
第二步:在resources目录下的templates目录下创建一个entity.java的文件,并将以下内容复制到该文件中
package ${package.Entity};
#foreach($pkg in ${table.importPackages})
import ${pkg};
#end
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
#if(${entityLombokModel})
import lombok.Data;
import lombok.EqualsAndHashCode;
##import lombok.experimental.Accessors;
#end
/**
* @Description:$!{table.comment}
* @author ${author}
* @since ${date}
*/
@ApiModel(value ="$!{table.comment}")
#if(${entityLombokModel})
@Data
#if(${superEntityClass})
@EqualsAndHashCode(callSuper = true)
#else
@EqualsAndHashCode(callSuper = false)
#end
##@Accessors(chain = true)
#end
#if(${table.convert})
@TableName("${table.name}")
#end
#if(${superEntityClass})
public class ${entity} extends ${superEntityClass}#if(${activeRecord})<${entity}>#end {
#elseif(${activeRecord})
public class ${entity} extends Model<${entity}> {
#else
public class ${entity} implements Serializable {
#end
private static final long serialVersionUID = 1L;
## ---------- BEGIN 字段循环遍历 ----------
#foreach($field in ${table.fields})
#if(${field.keyFlag})
#set($keyPropertyName=${field.propertyName})
#end
#if("$!field.comment" != "")
@ApiModelProperty(value = "${field.comment}")
#end
#if(${field.keyFlag})
## 主键s
#if(${field.keyIdentityFlag})
@TableId(value = "${field.name}", type = IdType.AUTO)
#elseif(!$null.isNull(${idType}) && "$!idType" != "")
@TableId(value = "${field.name}", type = IdType.${idType})
#elseif(${field.convert})
@TableId("${field.name}")
#end
## 普通字段
#elseif(${field.fill})
## ----- 存在字段填充设置 -----
#if(${field.convert})
@TableField(value = "${field.name}", fill = FieldFill.${field.fill})
#else
@TableField(fill = FieldFill.${field.fill})
#end
#elseif(${field.convert})
@TableField("${field.name}")
#end
## 乐观锁注解
#if(${versionFieldName}==${field.name})
@Version
#end
## 逻辑删除注解
#if(${logicDeleteFieldName}==${field.name})
@TableLogic
#end
private ${field.propertyType} ${field.propertyName};
#end
## ---------- END 字段循环遍历 ----------
#if(!${entityLombokModel})
#foreach($field in ${table.fields})
#if(${field.propertyType.equals("boolean")})
#set($getprefix="is")
#else
#set($getprefix="get")
#end
public ${field.propertyType} ${getprefix}${field.capitalName}() {
return ${field.propertyName};
}
#if(${entityBuilderModel})
public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
#else
public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
#end
this.${field.propertyName} = ${field.propertyName};
#if(${entityBuilderModel})
return this;
#end
}
#end
#end
#if(${entityColumnConstant})
#foreach($field in ${table.fields})
public static final String ${field.name.toUpperCase()} = "${field.name}";
#end
#end
#if(${activeRecord})
@Override
protected Serializable pkVal() {
#if(${keyPropertyName})
return this.${keyPropertyName};
#else
return null;
#end
}
#end
#if(!${entityLombokModel})
@Override
public String toString() {
return "${entity}{" +
#foreach($field in ${table.fields})
#if($!{velocityCount}==1)
"${field.propertyName}=" + ${field.propertyName} +
#else
", ${field.propertyName}=" + ${field.propertyName} +
#end
#end
"}";
}
#end
}
第三步:进行代码生成器的配置
package com.generate;
import com.baomidou.mybatisplus.annotation.DbType;
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.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class MybatisPlusCodeGenerator {
public static void main(String[] args) {
// 数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig(); // 数据源配置
dataSourceConfig.setUrl("jdbc:mysql://192.168.66.100:3306/leadnews_wemedia?serverTimezone=GMT%2B8&useSSL=false");
dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("root");
dataSourceConfig.setDbType(DbType.MYSQL);
// 全局配置
GlobalConfig globalConfig = new GlobalConfig(); //全局配置
globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
globalConfig.setAuthor("Your Name");
globalConfig.setFileOverride(true); // 重复的话可以进行覆盖
globalConfig.setOpen(false);
globalConfig.setMapperName("%sMapper"); // 设置Mapper文件名称格式,可自定义,默认为实体类名
globalConfig.setServiceName("%sService"); //去掉Service接口的首字母I
globalConfig.setSwagger2(true); // 设置Swagger2注解
globalConfig.setEnableCache(false); // 关闭缓存
globalConfig.setBaseColumnList(true);// 设置列的展示
globalConfig.setBaseResultMap(true); // 结果集映射
globalConfig.setDateType(DateType.ONLY_DATE); // 设置日期的类型 包括ONLY_DATE(Date类型) SQL_PACK(Timestamp类型) TIME_PACK(Time类型)
// 包配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.example"); // 设置父级包路径
packageConfig.setModuleName("demo"); // 设置模块名称
packageConfig.setEntity("pojo"); // 设置实体类包名称
packageConfig.setMapper("mapper"); // 设置mapper接口包名称
packageConfig.setService("service"); // 设置service接口包名称
packageConfig.setController("controller"); // 设置controller包名称
// 策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setNaming(NamingStrategy.underline_to_camel); // 设置下划线转驼峰
strategyConfig.setEntityTableFieldAnnotationEnable(true); // 设置TableName注解和TableField注解的配置
strategyConfig.setEntityLombokModel(true); // 设置Lombok注解
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel); // 设置下划线转驼峰
strategyConfig.setRestControllerStyle(true); // Restful风格
strategyConfig.setControllerMappingHyphenStyle(true); // 设置controller层中url中驼峰转连字符
strategyConfig.setEnableSqlFilter(true); // 开启全局 SQL 过滤器,排除系统表
// 模板配置
TemplateConfig templateConfig = new TemplateConfig();
//templateConfig.setEntity("/templates/entity.java"); // 实体类模板
//templateConfig.setMapper("/templates/mapper.xml"); // Mapper XML文件模板
// 代码生成器
AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setTemplate(templateConfig); // 设置模板对象
autoGenerator.setDataSource(dataSourceConfig); // 设置数据源对象
autoGenerator.setGlobalConfig(globalConfig); // 设置全局配置对象
autoGenerator.setPackageInfo(packageConfig); // 设置包配置对象
autoGenerator.setStrategy(strategyConfig); // 设置策略配置对象
// 执行生成
autoGenerator.execute();
}
}
最后:执行该方法即可生成对应的Java代码
注意:可以参考博客:mybatis-plus使用 generator 代码生成器生成实体类支持Swagger2-CSDN博客