解决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>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MyBatis Generator的简单使用方法示例

    添加配置文件 在项目resource目录下创建mybatis-generator文件夹 在文件夹下创建generatorConfig.xml,配置需要生成代码的数据表 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//

  • MyBatis-Plus逆向工程——Generator的使用

    有一位志同道合的朋友给我留言说,MyBatis-Plus的逆向工程跟接口继承BaseMapper有什么区别,我想了想,怎么解释都不合适,最后决定出此文章进行讲解. 环境搭建 首先创建一张数据库表 DROP TABLE IF EXISTS user; CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL

  • Mybatis generator如何自动生成代码

    开发项目的时候,表很多,是不可能一点点的自己去写xml ,dao文件的,这里就需要用到代码的自动生成工具了. 第一步:导入jar包,当然,这之前,基本环境,像mybatis,数据库之类的都得搭建好. <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2<

  • mybatis generator 使用方法教程(生成带注释的实体类)

    引言: 最近的一个项目,由于数据库表巨多,导致需要创建N多个java实体.dao.mapper.xml映射文件,如果均使用纯手工编写,无疑需要耗费大量时间和精力.于是上网学习了mybatis generator的使用. 现在项目写完了,闲暇之余把干货奉上,供大家直接使用. 需求场景: 当你的java 项目数据库有N张表需要使用mybatis进行数据库操作时,建议使用mybatis generator 自动生成工具.可以自动帮助你生成java实体类.dao.mapper.xml等. 首先给大家分享

  • Springboot通用mapper和mybatis-generator代码示例

    实现功能:根据数据库中的表,自动生成model.dao和对应的xml文件.xml中实现通用mapper中CURD功能 1.引入依赖 <properties> <mybatis.generator.version>1.3.7</mybatis.generator.version> <tk.mybatis.version>4.1.5</tk.mybatis.version> </properties> <dependencies&g

  • 详解在idea 中使用Mybatis Generator逆向工程生成代码

    通过MAVEN完成 Mybatis 逆向工程 1. POM文件中添加插件 在 pom 文件的build 标签中 添加 plugin 插件和 数据库连接 jdbc 的依赖. <build> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <

  • MyBatis Generator 自定义生成注释的方法

    最近做项目,ORM 使用的是 MyBatis,为了偷懒,我自然而然的想到了使用 MyBatis Generator(MBG)来生成数据库表对应的实体代码和 Mapper 代码.于是做了如下的配置(对 MBG 配置不熟悉的同学可以参考 Mybatis Generator最完整配置详解): <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC &qu

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

    遇到的问题! 注:自定义CommentGenerator的都知道 通过实现CommentGenerator接口的一些不足,毕竟只是实现了CommentGenerator接口,在里面的方法再怎么改,有效的也只是针对model类,并且使用的人大概也发现了,里面的addClassComment方法都知道是在类文件上面生成注释,但是无论我们在这个方法实现里写什么都没有效果,其实因为MGB默认是没有调用这个方法的,这个时候如果有需求希望生成的类文件自动加了类文档说明就办不到了,而如果在源代码的基础上修改,

  • 解决myBatis generator逆向生成没有根据主键的select,update和delete问题

    一.配置逆向generatoe.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

  • 解决jQuery使用append添加的元素事件无效的问题

    jquery api官方的例子在新增的元素上添加事件 $(document).on("click",'#lyysb a',function(){ if(!$(this).hasClass('cur')){ $(this).addClass('cur'); } else { $(this).removeClass('cur'); } }); on() 方法在被选元素及子元素上添加一个或多个事件处理程序. 自 jQuery 版本 1.7 起,on() 方法是 bind().live() 和

  • 解决mybatis #{}无法自动添加引号的错误

    目录 mybatis #{}无法自动添加引号 解决 mybatis #{}与${} 单引号 解决办法 验证 mybatis #{}无法自动添加引号 传入string类型时,无法自动添加引号,导致SQL将值识别为列名,导致SQL失败 解决 使用map类型代替string的传值 如 Map<String, String> map = new HashMap<>(2); map.put("userName", userName); return userMapper.

  • React通过classnames库添加类的方法

    React添加Class的方式 在vue中添加class是一件非常简单的事情: 你可以通过传入一个对象, 通过布尔值决定是否添加类: <button :class="{ active: isFlag, aaa: true}">按钮</button> 你也可以传入一个数组: <!-- 1.基本使用 --> <h2 :class="['aaa', 'bbb']">Hello Vue</h2> <!-- 2

  • IDEA添加Java类注释模版的方法

    本文介绍了IDEA添加Java类注释模版的方法,分享给大家,具体如下: IDEA版本:IntelliJ IDEA 2017.2.5 x64 eclipse能在类上方输入/**,回车添加类注释模版,但idea没有默认添加这个功能,需要做一些设置.下面介绍三种方法实现: 创建类默认添加类注释 手动添加类注释 批量添加JavaDoc注释 一.设置新建类默认添加注释 依次点击Setting|Editor|File and code templates,添加如图配置 例子: /** *describe:

  • 基于Java代码配置MyBatis Generator

    使用MyBatis Generator生成器时,有时候没办法使用xml形式的配置文件,比如将Maven项目设置成pom打包方式(<packaging>pom</packaging>)!由于Maven的工作机制对于打包方式为pom的项目是不会输出jar包或war包和resources内容,所以放在resources目录下或放在源码目录下的xml文件就没法读取了,就算你在pom.xml文件中明确有如下配置也没有用的: <build> <resources> &l

  • Mybatis Generator Plugin悲观锁实现示例

    目录 前言 实现背景: 实现Mybatis悲观锁 完整代码 前言 Mybatis Generator插件可以快速的实现基础的数据库CRUD操作,它同时支持JAVA语言和Kotlin语言,将程序员从重复的Mapper和Dao层代码编写中释放出来.Mybatis Generator可以自动生成大部分的SQL代码,如update,updateSelectively,insert,insertSelectively,select语句等.但是,当程序中需要SQL不在自动生成的SQL范围内时,就需要使用自定

  • MyBatis反向生成Example类的使用方式

    目录 MyBatis反向生成Example类使用 一.逆向工程 二.Example类的生成 三.Example类的使用 四.使用方法 MyBatis逆向工程生成Example类的方法总结 一.mapper接口中的方法解析 二.Example类解析 三.小结一下 MyBatis反向生成Example类使用 一.逆向工程 MyBatis的逆向工程不仅仅可以生成和表相对应的实体类还可以根据数据库种的表自动生成Example类,我们可以用Example类 实现条件增删改查而不用自己再去写sql语句. 二

随机推荐