MyBatis-plus将数据库表转换为Java映射

时间:2023-02-07 10:56:47

概述

编程语言:Java

根据ORM思想,编程语言操作数据库时,需将数据库表映射为对应编程语言结构。而对于繁多的数据库表及字段,手动转换耗时较长,故Mybatis-plus提供了可自动将数据库表映射为Java对象的方法,既mybatis-plus-generator。

官网资料

  1. 官网地址: ​​https://baomidou.com/​
  2. 资料使用流程:

MyBatis-plus将数据库表转换为Java映射

MyBatis-plus将数据库表转换为Java映射

MyBatis-plus将数据库表转换为Java映射

MyBatis-plus将数据库表转换为Java映射

代码

根据官网提示,创建代码生成器项目,然后配置数据库参数、模板文件、生成器代码等。

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目录下,然后自定义成所需格式。

MyBatis-plus将数据库表转换为Java映射

MyBatis-plus将数据库表转换为Java映射

自定义的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目录下,会被程序扫描到。

MyBatis-plus将数据库表转换为Java映射