Я использую MyBatis Generator в проекте Spring Boot 2.1.9 + Gradle для генерации классов сущностей и классов сопоставления из БД PostgreSQL.
Я добавил несколько плагинов для генерации аннотаций и оптимистической блокировки.
Я использую этот плагин MyBatis Generator Gradle.
https://github.com/kimichen13/mybatis-generator-plugin
Я использую этот плагин для создания аннотаций и оптимистической блокировки.
https://github.com/itfsw/mybatis-generator-plugin#17-%E4%B9%90%E8%A7%82%E9%94%81%E6%8F%92%E4%BB%B6
Кроме того, я хотел быреализовать пользовательский плагин генератора.
Мой вопрос:
Когда я выполняю задачу Gradle (./gradlew mbGenerator), произошла ошибка, которая показывает «Не удается создать экземпляр объекта типа com.example.demo». .plugin.MyCustomPlugin "(← Имя моего пользовательского плагина)
При удалении строки:
<!-- My Custom Plugin -->
<plugin type="com.example.demo.plugin.MyCustomPlugin"/>
в приведенном ниже файле generatorConfig.xml генератор работает правильно.
Что мне делать?
Мой build.gradle такой, как показано ниже.
plugins {
id 'org.springframework.boot' version '2.1.9.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id 'java'
id "com.thinkimi.gradle.MybatisGenerator" version "2.1.2"
}
group = 'com.example'
version = '0.0.1'
sourceCompatibility = '11'
mybatisGenerator {
verbose = true
configFile = "src/main/resources/generatorConfig.xml"
dependencies {
mybatisGenerator project(':')
mybatisGenerator 'com.itfsw:mybatis-generator-plugin:1.3.7'
mybatisGenerator 'org.mybatis.generator:mybatis-generator-core:1.3.7'
}
}
configurations {
developmentOnly
runtimeClasspath {
extendsFrom developmentOnly
}
compileOnly {
extendsFrom annotationProcessor
}
mybatisGenerator
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.0'
implementation 'org.mybatis.generator:mybatis-generator-core:1.3.7'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testCompile("org.mybatis.spring.boot:mybatis-spring-boot-starter-test:2.1.0")
}
Мой generatorConfig.xml такой, как показано ниже.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration >
<context id="context1" >
<!-- plugin to generate optimistic lock -->
<plugin type="com.itfsw.mybatis.generator.plugins.OptimisticLockerPlugin">
<property name="customizedNextVersion" value="false"/>
</plugin>
<plugin type="com.itfsw.mybatis.generator.plugins.LombokPlugin">
<property name="@Data" value="true"/>
<property name="@Builder" value="false"/>
<property name="@AllArgsConstructor" value="false"/>
<property name="@NoArgsConstructor" value="false"/>
<property name="@Accessors(chain = true)" value="false"/>
<property name="supportSuperBuilderForIdea" value="false"/>
</plugin>
<!-- plugin to generate annotation -->
<plugin type="com.itfsw.mybatis.generator.plugins.MapperAnnotationPlugin">
<property name="@Mapper" value="true"/>
<property name="@Repository" value="true"/>
</plugin>
<!-- My Custom Plugin -->
<plugin type="com.example.demo.plugin.MyCustomPlugin"/>
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="addRemarkComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="org.postgresql.Driver" connectionURL="jdbc:postgresql://localhost:5432/ec" userId="postgres" password="" />
<javaModelGenerator targetPackage="com.example.demo" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.demo" targetProject="src/main/resources"/>
<javaClientGenerator targetPackage="com.example.demo" targetProject="src/main/java"
type="MIXEDMAPPER"/>
<table schema="public" tableName="product" >
<property name="useActualColumnNames" value="true" />
<property name="customizedNextVersion" value="false"/>
<property name="versionColumn" value="version"/>
</table>
</context>
</generatorConfiguration>
Мой пользовательский плагин JavaФайл класса, как показано ниже.
package com.example.demo.plugin;
import org.mybatis.generator.api.PluginAdapter;
import java.util.List;
public class MyCustomPlugin extends PluginAdapter {
@Override
public boolean validate(List<String> warnings) {
return true;
}
// TODO do something
}