MyBatis Generator配置(每个方法都有详细介绍)

快速搭建

1.CommentGenerator

package com.longs;

import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.dom.java.CompilationUnit;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
import org.mybatis.generator.internal.DefaultCommentGenerator;
import org.mybatis.generator.internal.util.StringUtility;

import java.util.Properties;
//怎么自定义注释生成器呢?方法有2种:第一种是实现mybatis generator提供的CommentGenerator接口,并实现里边的方法。
// 第二种是偷懒的方法,只需要继承mybatis generator默认的注释生成器DefaultCommentGenerator,然后按需覆盖里边的方法就行了
/**

  • 自定义注释生成器

  • Created by macro on 2018/4/26.
    */
    public class CommentGenerator extends DefaultCommentGenerator {
    private boolean addRemarkComments = false;
    private static final String EXAMPLE_SUFFIX=“Example”;
    private static final String MAPPER_SUFFIX=“Mapper”;
    private static final String API_MODEL_PROPERTY_FULL_CLASS_NAME=“io.swagger.annotations.ApiModelProperty”;

    /**

    • 设置用户配置的参数 (就是读取generatorConfig.xml的参数)

    */
    @Override
    public void addConfigurationProperties(Properties properties) {
    super.addConfigurationProperties(properties);
    //properties.getProperty(“addRemarkComments”)在 读取
    this.addRemarkComments = StringUtility.isTrue(properties.getProperty(“addRemarkComments”));

    }

    /**

    • 给字段添加注释
      */
      @Override
      public void addFieldComment(Field field, IntrospectedTable introspectedTable,
      IntrospectedColumn introspectedColumn) {
      String remarks = introspectedColumn.getRemarks();//读取generatorConfig.xml的参数 读取数据库信息

      //根据参数和备注信息判断是否添加备注信息
      if(addRemarkComments&&StringUtility.stringHasValue(remarks)){
      // addFieldJavaDoc(field, remarks);
      //数据库中特殊字符需要转义
      if(remarks.contains(""")){
      remarks = remarks.replace(""","’");
      }
      //给model的字段添加swagger注解
      field.addJavaDocLine("@ApiModelProperty(value = “”+remarks+"")");

      }
      }

    /**

    • 给model的字段添加注释
      */
      private void addFieldJavaDoc(Field field, String remarks) {
      //文档注释开始
      field.addJavaDocLine("/**");
      //获取数据库字段的备注信息
      String[] remarkLines = remarks.split(System.getProperty(“line.separator”)); // System.getProperty(“line.separator”) 获取操作系统对应的换行符

      for(String remarkLine:remarkLines){
      field.addJavaDocLine(" * “+remarkLine);
      }
      addJavadocTag(field, false);
      field.addJavaDocLine(” */");

    }

    @Override
    public void addJavaFileComment(CompilationUnit compilationUnit) {
    super.addJavaFileComment(compilationUnit);
    //只在model中添加swagger注解类的导入
    if(!compilationUnit.getType().getFullyQualifiedName().contains(MAPPER_SUFFIX)&&!compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)){
    compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));
    }
    }
    }

2.generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
    <jdbcConnection driverClass="${jdbc.driverClass}"
                    connectionURL="${jdbc.connectionURL}"
                    userId="${jdbc.userId}"
                    password="${jdbc.password}">
        <!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题-->
        <property name="nullCatalogMeansCurrent" value="true" />
    </jdbcConnection>

    <javaModelGenerator targetPackage="com.longs.model" targetProject="mall-mbg\src\main\java"/>

    <sqlMapGenerator targetPackage="com.longs.mapper" targetProject="mall-mbg\src\main\resources"/>

    <javaClientGenerator type="XMLMAPPER" targetPackage="com.longs.mapper"
                         targetProject="mall-mbg\src\main\java"/>
    <!--生成全部表tableName设为%-->

    <!--        指定要生成的表,用%通配符匹配全部的表-->
    <table tableName="%">
        <generatedKey column="id" sqlStatement="MySql" identity="true"/>
    </table>
</context>
### 3.根据自己的修改generator.properties jdbc.driverClass=com.mysql.cj.jdbc.Driver jdbc.connectionURL=jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai jdbc.userId=root jdbc.password=1234 ### 4.启动类 package com.longs;

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

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/**

  • 用于生产MBG的代码

  • Created by macro on 2018/4/26.
    */
    public class Generator {
    public static void main(String[] args) throws Exception {
    //MBG 执行过程中的警告信息
    List warnings = new ArrayList();
    //当生成的代码重复时,覆盖原代码
    boolean overwrite = true;
    //读取我们的 MBG 配置文件
    InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml");
    ConfigurationParser cp = new ConfigurationParser(warnings);
    Configuration config = cp.parseConfiguration(is);
    is.close();

     DefaultShellCallback callback = new DefaultShellCallback(overwrite);
     //创建 MBG
     MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
     //执行生成代码
     myBatisGenerator.generate(null);
     //输出警告信息
     for (String warning : warnings) {
         System.out.println(warning);
     }
    

    }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值