mybatis-plus 自动生成代码

商飞尘
2023-12-01

1.依赖

org.apache.velocity velocity-engine-core 2.0 com.baomidou mybatis-plus-boot-starter 3.4.3 com.baomidou mybatis-plus-generator 3.3.1

2.代码

package com.xhy.demo.until;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;

import java.util.ArrayList;

class CodeGenerator {
public static void main(String[] args) {
// 1、创建代码生成器
AutoGenerator mpg = new AutoGenerator();

    // 2、全局配置
    GlobalConfig gc = new GlobalConfig();
/*
String projectPath = System.getProperty("user.dir");
System.out.println(projectPath);
*/

    gc.setOutputDir("F:\\IdeaProjects\\spring-redis");//1.修改为你项目的目录
    gc.setAuthor("xhy");
    gc.setOpen(false); //生成后是否打开资源管理器
    gc.setFileOverride(false); //重新生成时文件是否覆盖
    /*
     * mp生成service层代码,默认接口名称第一个字母有I
     * UcenterService
     * */
    gc.setServiceName("%sService"); //去掉Service接口的首字母I
    gc.setIdType(IdType.ASSIGN_ID); //主键策略
    gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
    gc.setSwagger2(true);//开启Swagger2模式
    mpg.setGlobalConfig(gc);

    // 3、数据源配置
    DataSourceConfig dsc = new DataSourceConfig();
    dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai");//2.修改为你数据库的名字,用户名,密码
    dsc.setDriverName("com.mysql.cj.jdbc.Driver");
    dsc.setUsername("root");
    dsc.setPassword("root");
    dsc.setDbType(DbType.MYSQL);
    mpg.setDataSource(dsc);

    // 4、包配置
    PackageConfig pc = new PackageConfig();
    pc.setModuleName("demo"); //模块名
    pc.setParent("com.xhy");
    pc.setController("controller");
    pc.setEntity("entity");
    pc.setService("service");
    pc.setMapper("mapper");
    mpg.setPackageInfo(pc);

    // 5、策略配置
    StrategyConfig strategy = new StrategyConfig();
    //strategy.setInclude("edu_teacher");
    strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
    strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀
    // 数据库表字段映射到实体的命名策略
    strategy.setColumnNaming(NamingStrategy.underline_to_camel);
    // lombok 模型 @Accessors(chain = true) setter链式操作
    strategy.setEntityLombokModel(true);
    strategy.setLogicDeleteFieldName("is_deleted"); // 3.修改逻辑删除字段名
    strategy.setEntityBooleanColumnRemoveIsPrefix(true); //去掉布尔值is_前缀
    strategy.setRestControllerStyle(true); //restful api风格控制器
    strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符

    // 4.修改自动填充字段名
    TableFill gmtCreate = new TableFill("gmt_create", FieldFill.INSERT);
    TableFill gmtModified = new TableFill("gmt_modified", FieldFill.INSERT_UPDATE);
    ArrayList<TableFill> tableFills = new ArrayList<>();
    tableFills.add(gmtCreate);
    tableFills.add(gmtModified);
    strategy.setTableFillList(tableFills);

    mpg.setStrategy(strategy);
    // 6、执行
    mpg.execute();
}

}

3.运行即可生成
controller
entity
mapper
service

4.application.properties配置文件
########################## mybatis-plus配置 begin################################
#外部化xml配置
#mybatis-plus.config-location = classpath:mybatis-config.xml
#指定外部化 MyBatis Properties 配置,通过该配置可以抽离配置,实现不同环境的配置部署
#mybatis-plus.configuration-properties = classpath:mybatis/config/properties
#xml扫描,多个目录用逗号或者分号分割(告诉 Mapper 所对应的 XML 文件位置)
mybatis-plus.mapper-locations = classpath*:mapper/.xml
#MyBatis 别名包扫描路径,通过该属性可以给包中的类注册别名,多个路径用逗号分割
mybatis-plus.type-aliases-package = com.wongoing.
.model
#枚举类 扫描路径,如果配置了该属性,会将路径下的枚举类进行注入,让实体类字段能够简单快捷的使用枚举属性
#mybatis-plus.type-enums-package = com.wongoing.*.model
#如果配置了该属性,则仅仅会扫描路径下以该类作为父类的域对象
mybatis-plus.type-aliases-super-type = java.lang.Object
#项目启动会检查xml配置存在(只在开发时打开)
mybatis-plus.check-config-location = true
#SIMPLE:该执行器类型不做特殊的事情,为每个语句的执行创建一个新的预处理语句,REUSE:改执行器类会复用预处理语句,BATCH:该执行器类型会批量执行所有的更新语句
mybatis-plus.default-executor-type = REUSE

是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射

mybatis-plus.configuration.map-underscore-to-camel-case = true

全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存,默认为 true

mybatis-plus.configuration.cache-enabled = true
#懒加载
mybatis-plus.configuration.aggressive-lazy-loading = true
#none:不启用自动映射 partial:只对非嵌套的 resultMap 进行自动映射 full:对所有的 resultMap 都进行自动映射
mybatis-plus.configuration.auto-mapping-behavior = partial
#none:不做任何处理 (默认值)warning:以日志的形式打印相关警告信息 failing:当作映射失败处理,并抛出异常和详细信息
mybatis-plus.configuration.auto-mapping-unknown-column-behavior = none
#如果查询结果中包含空值的列,则 MyBatis 在映射的时候,会不会映射这个字段(#允许在resultType="map"时映射null值)
mybatis-plus.configuration.call-setters-on-nulls = true
#这个配置会将执行的sql打印出来,在开发或测试的时候可以用
mybatis-plus.configuration.log-impl = org.apache.ibatis.logging.stdout.StdOutImpl
#是否允许映射结果为多个数据集
mybatis-plus.configuration.multiple-result-sets-enabled = false

mybatis-plus全局配置

#表名下划线命名默认为true
mybatis-plus.global-config.db-config.table-underline = false
#id类型: 0 # 0:数据库ID自增 1:用户输入id 2:全局唯一id(IdWorker) 3:全局唯一ID(uuid)
mybatis-plus.global-config.db-config.id-type = auto
#是否开启大写命名,默认不开启
mybatis-plus.global-config.db-config.capital-mode = false
#逻辑已删除值,(逻辑删除下有效) 需要注入逻辑策略LogicSqlInjector 以@Bean方式注入(逻辑未删除值(默认为 0))
mybatis-plus.global-config.db-config.logic-not-delete-value = 0
#逻辑未删除值,(逻辑删除下有效)(逻辑已删除值(默认为 1))
mybatis-plus.global-config.db-config.logic-delete-value = 1
########################## mybatis-plus配置 end #################################

 类似资料: