ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MyBatisPlus代码生成示例

2022-07-20 14:05:18  阅读:275  来源: 互联网

标签:代码生成 MyBatisPlus generator 示例 Builder baomidou new import com


一、依赖

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.3</version>
</dependency>
<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
            <scope>compile</scope>
</dependency>
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.4.1</version>
</dependency>

二、基础类

import com.baomidou.mybatisplus.generator.config.*;

/**
 * 基础测试类
 *
 * @author lanjerry
 * @since 3.5.3
 */
public class BaseGeneratorTest {

    /**
     * 执行数据库脚本
     */

    /**
     * 策略配置
     */
    protected static StrategyConfig.Builder strategyConfig() {
        return new StrategyConfig.Builder();
    }

    /**
     * 全局配置
     */
    protected static GlobalConfig.Builder globalConfig() {
        return new GlobalConfig.Builder();
    }

    /**
     * 包配置
     */
    protected static PackageConfig.Builder packageConfig() {
        return new PackageConfig.Builder();
    }

    /**
     * 模板配置
     */
    protected static TemplateConfig.Builder templateConfig() {
        return new TemplateConfig.Builder();
    }

    /**
     * 注入配置
     */
    protected static InjectionConfig.Builder injectionConfig() {
        // 测试自定义输出文件之前注入操作,该操作再执行生成代码前 debug 查看
        return new InjectionConfig.Builder().beforeOutputFile((tableInfo, objectMap) -> {
            System.out.println("tableInfo: " + tableInfo.getEntityName() + " objectMap: " + objectMap.size());
        });
    }
}

三、测试类


import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.TemplateType;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.type.JdbcType;
import org.junit.jupiter.api.Test;

/**
 * Oracle 代码生成
 *
 * @author lanjerry
 * @since 3.5.3
 */
public class OracleGeneratorTest extends BaseGeneratorTest {

    /**
     * 数据源配置
     */
    private static final DataSourceConfig DATA_SOURCE_CONFIG = new DataSourceConfig
            .Builder("jdbc:oracle:thin:@172.18.2.10:1521:stdb", "ecology", "QJ9svVFK18mPH6rw")
            .schema("ECOLOGY").typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
                if (metaInfo.getJdbcType().equals(JdbcType.NUMERIC) && metaInfo.getScale() == 0) {
                    return DbColumnType.LONG;
                } else {
                    return typeRegistry.getColumnType(metaInfo);
                }
            })
            .build();

    @Test
    public void testSimple() {
        /*  文档 https://github.com/baomidou/generator */
        AutoGenerator generator = new AutoGenerator(DATA_SOURCE_CONFIG);
        generator.global(globalConfig().disableOpenDir()
                .author("oa").outputDir("D:\\JkWorkSpace\\oa\\src\\main\\java\\")
                .build());
        generator.strategy(strategyConfig()
                .addInclude("HRMRESOURCE,HRMDEPARTMENT") // 设置需要生成的表名
                .addTablePrefix("t_", "c_")// 设置过滤表前缀
                .entityBuilder().enableFileOverride().enableRemoveIsPrefix()
                .enableChainModel().enableLombok().enableTableFieldAnnotation()
                .mapperBuilder().enableFileOverride().mapperAnnotation(Mapper.class)
                .build());
        generator.packageInfo(packageConfig()
                .parent("com.jinko.mybatis") // 设置父包名
                .mapper("mapper.oa")
                .xml("mapper.oa")
                .entity("model")
                .build());
        generator.injection(injectionConfig()
                .beforeOutputFile((b, r) -> {
                    System.out.println(b);
                }).build());
        generator.template(templateConfig()
                .disable(TemplateType.CONTROLLER)
                .disable(TemplateType.SERVICE)
                .disable(TemplateType.SERVICE_IMPL)
                .build())
                .execute(new FreemarkerTemplateEngine());// 使用Freemarker引擎模板,默认的是Velocity引擎模板
    }


}

标签:代码生成,MyBatisPlus,generator,示例,Builder,baomidou,new,import,com
来源: https://www.cnblogs.com/xysgo/p/16497719.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有