SpringBoot搭建 整合MBG+Lombok不用插件

效果图

1:pom文件引入依赖

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
		<plugin>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-maven-plugin</artifactId>
			<version>1.3.5</version>
			<configuration>
				<configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
				<overwrite>true</overwrite>
				<verbose>true</verbose>
			</configuration>
			<dependencies>
				<dependency>
					<groupId>tk.mybatis</groupId>
					<artifactId>mapper</artifactId>
					<version>4.0.0</version>
				</dependency>
				<dependency>
					<groupId>mysql</groupId>
					<artifactId>mysql-connector-java</artifactId>
					<version>5.1.3</version>
				</dependency>
			</dependencies>
		</plugin>

</plugins>
</build>

2:generatorConfig.xml文件配置(引入自定义LombokPlugin类,实现不生成getset方法

<!DOCTYPE generatorConfiguration
                PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
                "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
    <property name="beginningDelimiter" value="`"/>
    <property name="endingDelimiter" value="`"/>

    <!--引入generator插件-->
    <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
        <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
        <property name="caseSensitive" value="true"/>
    </plugin>

    <!--引入自定义LombokPlugin类,重写方法不生成getset方法-->
    <plugin type="com.myself.lucode.mbg.LombokPlugin" >
        <property name="hasLombok" value="true"/>
    </plugin>

    <commentGenerator type="com.xxx.CommentGenerator">
        <!-- 是否去除自动生成的注释 true:是 : false:否 -->
        <property name="suppressAllComments" value="true" />
        <property name="suppressDate" value="true" />
        <property name="addRemarkComments" value="true"/>
    </commentGenerator>

    <!--数据库地址配置-->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                    connectionURL="jdbc:mysql://127.0.0.1:3306/lucode?useUnicode=true&amp;characterEncoding=utf8&amp;autoReconnect=true&amp;useSSL=false"
                    userId="root"
                    password="root">
    </jdbcConnection>

    <!--mode生成路径-->
    <javaModelGenerator targetPackage="com.myself.lucode.entity.pmsBrand" targetProject="src/main/java"/>

    <!--xml生成路径-->
    <sqlMapGenerator targetPackage="mapper.pmsBrand" targetProject="src/main/resources"/>

    <!--mapper生成路径-->
    <javaClientGenerator targetPackage="com.myself.lucode.mapper.pmsBrand" targetProject="src/main/java" type="XMLMAPPER"/>
    
    <!--表名-->
    <table tableName="oms_order">
        <generatedKey column="id" sqlStatement="JDBC"/>
    </table>
    
</context>
</generatorConfiguration>

3:创建GeneratorMain启动类


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;

/**
 * @Author LK
 * @Date 2020/7/2
 * @Time 12:15
 */
public class GeneratorMain {
    public static void main(String[] args) throws Exception {
        List<String> warnings = new ArrayList<String>();
        // 当生成的代码重复时,覆盖原代码
        boolean overwrite = true;
        // 读取 MBG 配置文件
        InputStream is = GeneratorMain.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);
        }
    }
}

4:创建LombokPlugin重写生成getset方法,以及添加@Data注解


import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.mybatis.generator.api.IntrospectedColumn;
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.Method;
import org.mybatis.generator.api.dom.java.TopLevelClass;

/**
 * @Author LK
 * 不生成set,get方法,在类上添加lombok注解,例如@Data
 * @Date 2020/7/2
 * @Time 14:12
 */
public class LombokPlugin extends PluginAdapter {
    public boolean validate(List<String> list) {
        return true;
    }
    @Override
    public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
        //引入mode的@Data import包路径
        topLevelClass.addImportedType("lombok.Data");
        // 添加mode的注解
        topLevelClass.addAnnotation("@Data");
        // 添加mode的注释
        topLevelClass.addJavaDocLine("/**");
        topLevelClass.addJavaDocLine("* @ClassName: " + topLevelClass.getType().getShortName());
        topLevelClass.addJavaDocLine("* @Description: ");
        topLevelClass.addJavaDocLine("* @author: LK");
        topLevelClass.addJavaDocLine("* @date " + date2Str(new Date()));
        topLevelClass.addJavaDocLine("*/");
        return true;
    }
    @Override
    public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass,
                                   IntrospectedTable introspectedTable) {
        // Mapper文件的注释
        interfaze.addJavaDocLine("/**");
        interfaze.addJavaDocLine("* @ClassName: " + interfaze.getType().getShortName());
        interfaze.addJavaDocLine("* @Description: ");
        interfaze.addJavaDocLine("* @author: LK");
        interfaze.addJavaDocLine("* @date " + date2Str(new Date()));
        interfaze.addJavaDocLine("*/");
        interfaze.addImportedType(new FullyQualifiedJavaType("org.springframework.stereotype.Repository"));
        interfaze.addAnnotation("@Repository");
        return true;
    }
    @Override
    public boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass,
                                              IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) {
        // 不生成getter
        return false;
    }
    @Override
    public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass,
                                              IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) {
        // 不生成setter
        return false;
    }

    private String date2Str(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 ahh:mm:ss");
        return sdf.format(date);
    }
}
5:运行启动类看效果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值