Maven坐标
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
Velocity的模版
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${package.Mapper}.${table.mapperName}">
#if(${enableCache})
<cache type="${cacheClassName}"/>
#end
#if(${baseResultMap})
<resultMap id="BaseResultMap" type="${package.Entity}.${entity}">
#foreach($field in ${table.fields})
#if(${field.keyFlag})##生成主键排在第一位
<id column="${field.name}" property="${field.propertyName}" />
#end
#end
#foreach($field in ${table.commonFields})##生成公共字段
<result column="${field.name}" property="${field.propertyName}" />
#end
#foreach($field in ${table.fields})
#if(!${field.keyFlag})##生成普通字段
<result column="${field.name}" property="${field.propertyName}" />
#end
#end
</resultMap>
#end
#if(${baseColumnList})
<sql id="Base_Column_List">
#foreach($field in ${table.commonFields})
${field.columnName},
#end
${table.fieldNames}
</sql>
<insert id="insertOrUpdate${table.entityName}" parameterType="${package.Entity}.${table.entityName}">
INSERT INTO ${table.name} (
#foreach($field in ${table.fields})
#if($foreach.hasNext)
`${field.name}` ,
#else
`${field.name}`
#end
#end
) values
<foreach item="item" index="index" collection="list" separator="," open="(" close=")" >
#foreach($field in ${table.fields})
#if($foreach.hasNext)
#{item.${field.propertyName}},
#else
#{item.${field.propertyName}}
#end
#end
</foreach>
ON DUPLICATE KEY UPDATE
#foreach($field in ${table.fields})
#if($foreach.hasNext)
`${field.name}` = values(`${field.name}`),
#else
`${field.name}` = values(`${field.name}`)
#end
#end
</insert>
#end
</mapper>
代码生成java类
public class MyBatisPlusGenerator {
public static void main(String[] args) {
String[] tableArray = {"sys_role" };
String[] tablePrefixArray = {"t_"};
String projectPath = "F:\\work\\test\\";
String packageName = "com.renpho.cpc";
String url = "jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8";
String username = "root";
String password = "123456";
FastAutoGenerator.create(url, username, password)
.globalConfig(builder -> {
builder.author("McCaw")
.commentDate("yyyy-MM-dd")
.dateType(DateType.ONLY_DATE)
.outputDir(projectPath + "\\src\\main\\java");
})
.packageConfig(builder -> {
builder.parent(packageName)
.controller("controller")
.entity("domain")
.service("service")
.serviceImpl("service.impl")
.mapper("mapper")
.pathInfo(Collections.singletonMap(OutputFile.xml, projectPath + "\\src\\main\\resources\\mapper"));
})
.strategyConfig(builder -> {
builder.addInclude(tableArray)
.addTablePrefix(tablePrefixArray)
.entityBuilder()
.naming(NamingStrategy.underline_to_camel)
.columnNaming(NamingStrategy.underline_to_camel)
.addTableFills(new Column("create_time", FieldFill.INSERT))
.addTableFills(new Property("update_time", FieldFill.INSERT_UPDATE))
.enableLombok()
.enableTableFieldAnnotation()
.versionPropertyName("version")
.versionColumnName("version")
.idType(IdType.AUTO)
.enableFileOverride()
.serviceBuilder()
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
.enableFileOverride()
.controllerBuilder()
.enableHyphenStyle()
.formatFileName("%sController")
.enableRestStyle()
.enableFileOverride()
.mapperBuilder()
.enableFileOverride()
.enableBaseResultMap()
.enableBaseColumnList()
.formatMapperFileName("%sMapper")
.formatXmlFileName("%sMapper");
})
.templateConfig(templateConfig -> {
templateConfig.mapper("templates/mapper.xml.vm");
})
.execute();
System.out.println("生成完成");
}
}