Java MyBatis生成器无法实例化自定义插件类
我在Spring Boot 2.1.9+Gradle项目中使用MyBatis生成器从PostgreSQL DB生成实体类和映射器类。Java MyBatis生成器无法实例化自定义插件类,java,mybatis,spring-mybatis,mybatis-generator,Java,Mybatis,Spring Mybatis,Mybatis Generator,我在Spring Boot 2.1.9+Gradle项目中使用MyBatis生成器从PostgreSQL DB生成实体类和映射器类。 我添加了一些插件来生成注释和乐观锁 我使用这个MyBatis生成器Gradle插件。 我使用此插件生成注释和乐观锁。 此外,我想实现生成器的自定义插件 我的问题: 当我执行Gradle任务(./gradlew mbGenerator)时,发生了一个错误并显示 “无法实例化com.example.demo.plugin.MyCustomPlugin类型的对象”(
我添加了一些插件来生成注释和乐观锁 我使用这个MyBatis生成器Gradle插件。
我使用此插件生成注释和乐观锁。
此外,我想实现生成器的自定义插件 我的问题:
当我执行Gradle任务(./gradlew mbGenerator)时,发生了一个错误并显示 “无法实例化com.example.demo.plugin.MyCustomPlugin类型的对象”(←我的自定义插件名称) 当线路:
<!-- My Custom Plugin -->
<plugin type="com.example.demo.plugin.MyCustomPlugin"/>
我的generatorConfig.xml如下所示
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")
}
<?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>
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
}
我的自定义插件Java类文件如下所示
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")
}
<?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>
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
}
package com.example.demo.plugin;
导入org.mybatis.generator.api.PluginAdapter;
导入java.util.List;
公共类MyCustomPlugin扩展了PluginAdapter{
@凌驾
公共布尔验证(列出警告){
返回true;
}
//做点什么
}
您应该在pom.xml中添加依赖项
<dependency>
<groupId>com.itfsw</groupId>
<artifactId>mybatis-generator-plugin</artifactId>
<version>${mybatis.generator.itfsw.plugin.version}</version>
</dependency>
com.itfsw
我从未在Gradle上尝试过,但在Maven上,自定义插件需要放在一个单独的JAR中,并添加到依赖项列表中。谢谢您的评论。当我为Mybatis插件创建子项目并将其添加到依赖项列表时,该插件工作正常。不创建子项目就不可能创建自定义插件吗?我想是的,但可能有一种方法我不知道。