概述
编程语言:Java
根据ORM思想,编程语言操作数据库时,需将数据库表映射为对应编程语言结构。而对于繁多的数据库表及字段,手动转换耗时较长,故Mybatis-plus提供了可自动将数据库表映射为Java对象的方法,既mybatis-plus-generator。
官网资料
- 官网地址: https://baomidou.com/
- 资料使用流程:
代码
根据官网提示,创建代码生成器项目,然后配置数据库参数、模板文件、生成器代码等。
pom文件引入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
自定义模板文件
从mybatis-plus-generator包中找到entity和mapper模板文件,拷贝到resource下templates目录下,然后自定义成所需格式。
自定义的entity模板文件如下:
package ${package.Entity};
/*
* $!{table.comment}
*
* @author ${author}
* @since ${date}
*/
#foreach($pkg in ${table.importPackages})
import ${pkg};
#end
import lombok.*;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ${entity}
{
## ---------- BEGIN 字段循环遍历 ----------
#foreach($field in ${table.fields})
#if(${field.keyFlag})
#set($keyPropertyName=${field.propertyName})
#end
#if("$!field.comment" != "")
//${field.comment}
#end
private ${field.propertyType} ${field.propertyName};
#end
## ---------- END 字段循环遍历 ----------
}
自定义的mapper模板文件如下:
package ${package.Mapper};
/*
* $!{table.comment} Mapper 接口
*
* @author ${author}
* @since ${date}
*/
import ${package.Entity}.${entity};
import ${superMapperClassPackage};
#if(${mapperAnnotationClass})
import ${mapperAnnotationClass.name};
#end
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ${table.mapperName} extends ${superMapperClass}<${entity}>
{
}
编写代码生成器代码
package com.zkfr.mybatisplusautogenerator;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class MybatisPlusAutoGeneratorApplication2
{
public static void main(String[] args)
{
FastAutoGenerator.create("jdbc:mysql://192.168.1.112:3306/test","test","test123456")
.globalConfig(builder -> {
builder.author("zkfr")
.outputDir( System.getProperty("user.dir") + "/src/main/java" )
.dateType(DateType.ONLY_DATE );
})
.packageConfig(builder -> {
builder.parent("com.zkfr")
.moduleName("generate_code")
.entity( "pojo" )
.mapper( "dao" );
})
.strategyConfig(builder -> {
builder.entityBuilder()
.enableLombok()
.naming(NamingStrategy.no_change);
builder.mapperBuilder()
.formatMapperFileName( "%sDao" );
})
.templateConfig( builder -> {
builder.entity( "/templates/entity.java.vm" )
.mapper( "/templates/mapper.java.vm" );
} )
.execute();
}
}
运行代码
运行代码后可以看到,生成了很多代码,本文目标所需dao和pojo项也在其中。
注:每次执行前,需将上次生成的结果删除,因为生成的代码放到了src目录下,会被程序扫描到。