解决mybatis-generator生成器添加类注释方法无效的问题

作者:BUG记录机 时间:2023-12-05 06:34:57 

遇到的问题!

注:自定义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

标签:mybatis,注释,generator
0
投稿

猜你喜欢

  • java实现图片任意角度旋转

    2021-05-30 12:08:23
  • Java日常练习题,每天进步一点点(58)

    2021-06-26 01:13:02
  • Java代码实现简单酒店管理系统

    2023-11-21 03:38:57
  • SpringBoot整合Echarts实现用户人数和性别展示功能(详细步骤)

    2023-02-22 00:31:59
  • Springboot实现阿里云通信短信服务有关短信验证码的发送功能

    2022-07-24 15:36:53
  • Android自定义textview实现竖直滚动跑马灯效果

    2023-09-30 07:42:05
  • C#中WinForm程序退出方法技巧总结

    2022-01-03 12:42:21
  • 利用Distinct()内置方法对List集合的去重问题详解

    2023-01-31 00:45:30
  • Springboot通过lucene实现全文检索详解流程

    2021-12-10 22:59:45
  • SpringBoot整合TKMyBatis实现单表增删改查操作

    2022-01-30 19:52:28
  • SpringBoot快速搭建实现三步骤解析

    2021-06-12 22:33:24
  • Java Swing JComboBox下拉列表框的示例代码

    2022-09-16 00:24:50
  • Android startActivityForResult实例详解

    2021-07-18 00:50:33
  • unity实现场景切换进度条显示

    2022-05-16 20:56:42
  • Android仿Keep运动休息倒计时圆形控件

    2022-08-02 07:54:36
  • C语言线索二叉树基础解读

    2023-03-31 12:04:55
  • 详解J2EE开发的网站部署到阿里云服务器的方法

    2022-06-21 07:50:16
  • 海量数据去重排序bitmap(位图法)在java中实现的两种方法

    2022-10-10 17:27:36
  • UnityShader使用Plane实现翻书效果

    2022-05-19 14:46:14
  • Android Studio利用AChartEngine制作饼图的方法

    2021-12-28 10:53:30
  • asp之家 软件编程 m.aspxhome.com