自定义mybatis-generator生成工具

首先,mybatis提供的这套底层代码生成工具是非常人性化的,用户直接依赖jar包就可以一键生成,并且提供一套配置文件,让用户进行灵活的配置以满足不同的用户需求。然而,只通过简单的修改配置文件还远远无法满足我们的需求,那怎么办呢?幸运的是,mybatis-generator可以让用户实现其相应的接口来自定义自己的代码风格,如代码注释(CommentGenerator),java类型(JavaTypeResolver);当然了,也可以直接通过下载源码,修改源代码,打成jar包再重新添加依赖方式生成。下面就通过这两种方式来生成:
第一步,搭建一个简单的maven项目,我使用的工具是idea
,依次点击菜单栏【file】-【new】-【project】自定义mybatis-generator生成工具_第1张图片
弹出框选择【maven】,点击下一步弹出如下路所示弹,填写信息,类似如图所示填写即可,然后点击下一步
自定义mybatis-generator生成工具_第2张图片
选择项目所建位置,然后确定,完成即可
自定义mybatis-generator生成工具_第3张图片
完成之后大概是这个样子,点击红色框,开启自动导入功能,当在pom.xml中添加依赖,本地仓库没有就会自动下载
自定义mybatis-generator生成工具_第4张图片
第二步,为pom.xml添加如下依赖,



        
            mysql
            mysql-connector-java
            6.0.6
        
        
        
            org.mybatis
            mybatis
            3.4.4
        
        
            org.mybatis.generator
            mybatis-generator-core
            1.3.5
        
        
        
            com.alibaba
            druid
            1.0.29
        
    

    
        webDemo
        
            
            
                ${basedir}/src/main/java
                
                    **/*.properties
                    **/*.xml
                
            
            
                ${basedir}/src/main/resources
            
        
        
            
                
                    maven-clean-plugin
                    3.1.0
                
                
                    maven-resources-plugin
                    3.0.2
                
                
                    maven-compiler-plugin
                    3.8.0
                
                
                    maven-surefire-plugin
                    2.22.1
                
                
                    maven-war-plugin
                    3.2.2
                
                
                    maven-install-plugin
                    2.5.2
                
                
                    maven-deploy-plugin
                    2.8.2
                
                
                    org.mybatis.generator
                    mybatis-generator-maven-plugin
                    1.3.2
                    
                        src/main/resources/generatorConfig.xml
                        true
                        true
                    
                
            
        
    

maven会自动下载依赖的jar包,jar包存放于本地仓库,一般没有修改路径的话默认是在c盘,users-admin下的.m2文件夹下,如图
自定义mybatis-generator生成工具_第5张图片
到此为止,maven已经搭建完成,所依赖的jar包也导入完成,接下来就是重头戏了!
第三步,在resource目录下新增generatorConfig.xml配置文件,配置文件内容如下,主要配置文件都带有注释,如果有不懂的地方可以去百度一下,网上讲解很全面,我就不详细介绍了。





    
    
    
        
        
        
        
        
        
            
            
            
            
        
        
        
            
        
        
        
            
        

        
        
            
            
            
            
            
            
            
            
            
        

        
        
        
            
        
        
        
            
        
        
        
            
        

然后在resource目录下配置jdbc的相关配置,我分为两个,一个是mysql的,一个是orcal的,如下图所示,classpath为orcal数据库驱动包所在位置,下面的为用户名和密码,最后一个是genratorConfig.xml中的配置属性,我写到配置文件里了,可不用管他
自定义mybatis-generator生成工具_第6张图片
然后,在java目录下新建一个class文件,最好顺便建下包,例如
自定义mybatis-generator生成工具_第7张图片
这是一个启动类,目的是通过main方法来加载配置文件和生成代码
代码如下:

package com.aden;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class GeneratorStartUp {

    public static void main(String[] args) throws URISyntaxException {
        try {
            List warnings = new ArrayList();
            boolean overwrite = true;
            ClassLoader classloader = Thread.currentThread().getContextClassLoader();
            InputStream is = classloader.getResourceAsStream("generatorConfig.xml");
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(is);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            myBatisGenerator.generate(null);
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (InvalidConfigurationException e) {
            e.printStackTrace();
        } catch (XMLParserException e) {
            e.printStackTrace();
        }
    }
}

到目前为止已经可以生成基本的底层代码,运行Generatorstartup类,得到如下图所示代码
自定义mybatis-generator生成工具_第8张图片
但是,这还达不到我们的要求,因此我们需要自定义这些生成注释的类
分两种情况来自定义:
第一种实现mybatis-generator中的commentGenerator类,然后自定义修改,最后添加到配置中。
步骤一:新建类MyCommentGenerator,然后实现CommentGenerator接口,如图所示
自定义mybatis-generator生成工具_第9张图片
步骤二:根据自己的需求修改里面的实现方法,下面部分是给属性加上注释的代码偏断,文章后面会提供全部源码和jar包工参考

/**
 * 类属性注释
 * */
    public void addFieldComment(Field field, IntrospectedTable introspectedTable,
                                IntrospectedColumn introspectedColumn) {
        if (suppressAllComments) {
            return;
        }

        StringBuilder sb = new StringBuilder();

        field.addJavaDocLine("/**");
        sb.append(" * ");
        sb.append(introspectedColumn.getRemarks());
        field.addJavaDocLine(sb.toString());

    //    addJavadocTag(field, false);

        field.addJavaDocLine(" */");
    }

步骤三:自定义类建完之后,还要将其添加到配置文件中去,让其被加载,type属性将会告知配置文件应该加载哪个类,默认没有type,会加载源码中的DefaultCommentGenerator类
自定义mybatis-generator生成工具_第10张图片
步骤四:大功告成,运行startup类,生成代码图片如下
自定义mybatis-generator生成工具_第11张图片
但是这种方式无法生成example类的注释如下图,因为源码中并没有提供这个方法,因此无法通过实现它的接口的方法实现,因此,无法满足有些需要给类也加上注释的场景,但也能满足大部分公司的要求了,如果有需求,那就继续往下看,下面介绍修改jar包源码的方式来实现,个人推荐这种,能够修改源码,就意味着你想怎么改就怎么改,完全按照自己的风格来定义。
自定义mybatis-generator生成工具_第12张图片
第二种修改源码的方式见下一篇博客介绍。
为了方便多次测试,我的源码放在utils了包下,请自行更改。
CSDN上传的文件,下载需要积分,所以改成百度网盘下载
链接:https://pan.baidu.com/s/1gXzhBc2QUDAaQRVe5bpLdA
提取码:dx04

你可能感兴趣的:(java)