java ~ mybatis-plus 自动生成实体类

jar包:

	<dependency>
		<groupId>com.baomidou</groupId>
	    <artifactId>mybatis-plus-generator</artifactId>
	    <scope>test</scope>
	    <version>3.5.4</version>
	</dependency>
	
	<dependency>
		<groupId>com.baomidou</groupId>
		<artifactId>mybatis-plus-boot-starter</artifactId>
		<version>3.5.4</version>
    </dependency>

目录解析:

java
 ├─com.ycf.test
		  ├─controller  存放controller目录
		  ├─service
			 ├─         存放server接口
			 ├─impl	    存放server接口实现类
		  ├─entity
		 	 ├─bo       存放controller接收页面数据过滤的参数,比如分页信息
		 	 ├─po       存放controller返回前台集合的实体类
		 	 ├─vo       存放实体类目录
		  ├─mapper      存放...mapper.java文件
resources
 ├─mapper 				存放xxxMapper.xml文件

封装工具类

package com.ycf.test;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;

import java.sql.Types;
import java.util.Collections;

/**
 * <p>
 * 快速生成
 * </p>
 */

public class FastAutoGeneratorTest {
    // 配置代码路径
    private static final String PROJ_PATH = "E:\\项目地址\\ycf-project\\";

    /**
     * 执行 run
     */
    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:oracle:thin:@127.0.0.1:521/xxx", "oracleName", "oraclePassword")
                .globalConfig(builder -> {
                    builder.author("ycf") // 设置作者
//                            .enableSwagger() // 开启 swagger 模式
                            .outputDir(PROJ_PATH + "src/main/java") // 指定输出目录
                            .dateType(DateType.ONLY_DATE) // 日期类型
                            .disableOpenDir()
                    ;
                })
                .packageConfig(builder -> {
                    builder.parent("com.ycf") // 设置父包名
                            .moduleName("test") // 设置父包模块名
                            .entity("entity.po")
                            .pathInfo(Collections.singletonMap(OutputFile.xml, PROJ_PATH + "src/main/resources/mapper")) // 设置mapperXml生成路径
                    ;
                })
                .strategyConfig(builder -> {
                    builder
                            .addInclude("tableName")// 设置需要生成的表名
//                            .addTablePrefix("GJ_") // 设置过滤表前缀
//                            .likeTable(new LikeTable("YCF_"))//批量生成
//                            .addExclude("YCF_TABLE_1","YCF_TABLE_2","YCF_TABLE_3")
                            .entityBuilder().logicDeleteColumnName("DELETED").idType(IdType.ASSIGN_UUID)
                            .enableFileOverride()// 实体类覆盖,其他文件不覆盖
                            .enableLombok()
                            .addTableFills(new Column("DELETED", FieldFill.INSERT),
                                    new Column("CREATE_BY", FieldFill.INSERT),
                                    new Column("CREATE_DATE", FieldFill.INSERT),
                                    new Column("UPDATE_BY", FieldFill.UPDATE),
                                    new Column("UPDATE_DATE", FieldFill.UPDATE)) // 自动填充
                            .controllerBuilder().enableRestStyle() // 开启生成@RestController 控制器
                    ;
                })
                .templateConfig(builder ->
                        // 控制要生成的文件
                        builder
                                /*.disable(
                                        TemplateType.CONTROLLER,
                                        TemplateType.SERVICE,
                                        TemplateType.SERVICE_IMPL,
                                        TemplateType.MAPPER,
                                        TemplateType.XML
                                )*/
                                .entity("/templates/entity.java")) // 调整实体类使用的lombok注解
//                                .entity("/templates/entityLog.java")) // 调整实体类使用的lombok注解,增加日志相关注解
                .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
                    int typeCode = metaInfo.getJdbcType().TYPE_CODE;
                    int length = metaInfo.getLength();
                    int scale = metaInfo.getScale();
                    // 根据数据库配置的NUMBER字段长度和小数位生成对应java数字类型
                    if (typeCode == Types.NUMERIC) {
                        if (scale == 0) {
                            if (length <= 9) {
                                return DbColumnType.INTEGER;
                            } else {
                                return DbColumnType.LONG;
                            }
                        } else if (length > 9) {
                            return DbColumnType.BIG_DECIMAL;
                        } else {
                            return DbColumnType.DOUBLE;
                        }
                    }
                    return typeRegistry.getColumnType(metaInfo);
                }))
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值