java - MyBatis Generator 无法实例化自定义插件类
问题描述
我在 Spring Boot 2.1.9 + Gradle 项目中使用 MyBatis Generator 从 PostgreSQL DB 生成实体类和映射器类。
我添加了一些插件来生成注释和乐观锁。
我使用这个 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
}
解决方案
您应该在 pom.xml 中添加依赖项
<dependency>
<groupId>com.itfsw</groupId>
<artifactId>mybatis-generator-plugin</artifactId>
<version>${mybatis.generator.itfsw.plugin.version}</version>
</dependency>
参考:https ://github.com/itfsw/mybatis-generator-plugin/issues/6
推荐阅读
- laravel - 验证欧芹js中的日期输入字段
- angular - Angular 7 ngx 芯片的工作功能
- java - 如何在 Spring Boot 属性中生成当前年份
- c# - SMTP 邮件不显示图像
- android - 如何从 JsonObject 获取数据并在 Kotlin 的 RecyclerView 上设置为数组?
- java - 将 Object 与原始类型进行比较
- c++ - RocksDB 是存储同质对象的好选择吗?
- mysql - 编辑/删除多行(如果存在)的最佳方法
- python - 收到错误 selenium.common.exceptions.WebDriverException:消息:“chromedriver.exe”可执行文件需要在 python 的 PATH 中
- android - 如何在 android 中实现 facebook account-kit 即时验证?