解决mybatis-generator生成器添加类注释方法无效的问题
作者:BUG记录机 发布时间:2023-12-05 06:34:57
标签:mybatis,注释,generator
遇到的问题!
注:自定义CommentGenerator的都知道
通过实现CommentGenerator接口的一些不足,毕竟只是实现了CommentGenerator接口,在里面的方法再怎么改,有效的也只是针对model类,并且使用的人大概也发现了,里面的addClassComment方法都知道是在类文件上面生成注释,但是无论我们在这个方法实现里写什么都没有效果,其实因为MGB默认是没有调用这个方法的,这个时候如果有需求希望生成的类文件自动加了类文档说明就办不到了,而如果在源代码的基础上修改,就好办多了,看了好久的源码和网站上的经验
解决办法如下
先看效果
import org.springframework.stereotype.Component;
/**
*我这里需求是自动添加注解,也可以看下方生成注释,导包等操作
*/
@Component("tableName")
public interface tableNameMapper {
...
}
1、继承PluginAdapter
package com.**.***.generate;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
import org.mybatis.generator.api.dom.java.Interface;
import org.mybatis.generator.api.dom.java.TopLevelClass;
import java.util.List;
/**
* Created by JGMa on 2019-07-17
**/
public class BaseMapperGeneratorPlugin extends PluginAdapter {
@Override
public boolean validate(List<String> warnings) {
return true;
}
/**
* 生成mapper接口
*/
@Override
public boolean clientGenerated(Interface interfaze,
TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType("Mapper<"
+ introspectedTable.getBaseRecordType() + ">");
FullyQualifiedJavaType imp = new FullyQualifiedJavaType(
"com.github.abel533.mapper.Mapper");
FullyQualifiedJavaType imp2 = new FullyQualifiedJavaType(
"org.springframework.stereotype.Component");
/**
* extends MybatisBaseMapper
*/
interfaze.addSuperInterface(fqjt);
/**
* 导包
*/
interfaze.addImportedType(imp);
interfaze.addImportedType(imp2);
/**
* 清楚原有方法
*/
interfaze.getMethods().clear();
//interfaze.getAnnotations().clear();
// 根据业务自己灵活发挥,本次需要spring注入
interfaze.addAnnotation("@Component(\"" + introspectedTable.getFullyQualifiedTable() + "\")");
return true;
}
}
com.github.abel533.mapper.Mapper是一个通用的mapper有兴趣的也可以去看,下面给出pom
<!-- 通用mapper -->
<dependency>
<groupId>com.github.abel533</groupId>
<artifactId>mapper</artifactId>
<version>2.3.4</version>
</dependency>
2、xml中配置插件
<context>
<!--自定义的mapper接口-->
<plugin type="com.**.***.generate.BaseMapperGeneratorPlugin"/>
<commentGenerator type="com.hzqsy.cebdis.config.MyCommentGenerator">
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="true"/>
</commentGenerator>
</context>
3、启动(请使用此种方式运行逆向工程)
import org.mybatis.generator.api.ShellRunner;
/**
* Created by JGMa on 2019-07-15
**/
public class StartUp {
public static void main(String[] args) {
args = new String[] { "-configfile", "D:\\mybatis-generator-config.xml", "-overwrite" };
ShellRunner.main(args);
}
}
如果找不到shellRunner需要导包
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
来源:https://blog.csdn.net/JGMa_TiMo/article/details/96290826


猜你喜欢
- 注意:不同的JDK版本的扩容机制可能有差异实验环境:JDK1.8扩容机制:当向ArrayList中添加元素的时候,ArrayList如果要满
- 一、Drools引擎简介1、基础简介Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形
- 循环对数组进行拷贝利用循环对数组进行拷贝很简单,就是利用循环将要拷贝的数组的元素逐个赋值给新的数组。具体代码实现如下:public stat
- C++中的动态数组(Dynamic Array)是指动态分配的、可以根据需求动态增长占用内存的数组。为了实现一个动态数组类的封装,我们需要考
- C++ 实现求最大公约数和最小公倍数最大公约数辗转相除法:int maxDivisor(int a, int b) { int
- 一、Maven聚合开发_继承关系 Maven中
- 编程是一门艺术,大批量的改动显然是非常丑陋的做法,用心的琢磨写的代码让它变的更美观。在现实生活中,存在很多“部分-整体&
- 一、堆的概念堆的定义:n个元素的序列{k1 , k2 , … , kn}称之为堆,当且仅当满足以下条件时:(1)ki
- 熟悉Eclipse的都知道Eclipse经常性的会出现一些莫名其妙的问题,有时候运行的好好的突然重启一下项目就莫名的报错,所以经常会用到cl
- 前言Promoted Actions是指一种操作按钮,它不是放在actionbar中,而是直接在可见的UI布局中(当然这里的UI指的是set
- java中的set接口有如下的特点:不允许出现重复元素;集合中的元素位置无顺序;有且只有一个值为null的元素。因为java中的set接口模
- 使用Postman传递arraylist数据给springboot起因:需要做一个批量删除的功能,后台接收一个ArrayList ids 。
- 前言本章内容主要研究一下java高级特性-反射、android注解、和 * 的使用,通过了解这些技术,可以为了以后实现组件化或者Api h
- 例子:using System;using System.Collections.Generic;using System.Text;nam
- //程序下载升级 zhouxiang@JavascriptInterfacepublic void UpdateCAECP(final St
- 如何查看 Java 的字节码文件?在 Java 中,字节码文件.class实际上是二进制文件,并不能直接查看。要想查看,我们只能通过反编译对
- 我们通常在使用Java 调用脚本的时候,会使用 Runtime 类如:// 打开浏览器并访问 http://localh
- 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(一)——MyBatis的基础知识。MybatisFirst中存在大
- 各位亲们可以尝试以下代码:注:这里我就只有一个html标签对来说明问题了,首部之类的东西,自己添加。<html> &n
- 前言在面对 生产者-消费者 的场景下, netcore 提供了一个新的命名空间 System.Threading.Channels 来帮助我