遇到的问题!
注:自定义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;
public class BaseMapperGeneratorPlugin extends PluginAdapter {
@Override
public boolean validate(List<String> warnings) {
return true;
}
@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");
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;
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>
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。