Mybatis-plus系列学习2

705 阅读3分钟

这是我参与8月更文挑战的第12天,活动详情查看:8月更文挑战

代码生成器

  • MyBatis-Plus 的代码生成器是AutoGenerator 使用代码生成器,可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,不用手动去写,提高了开发的效率

各种配置

代码生成器是AutoGenerator 配置包含:一些基本的配置主要有:

全局配置(GlobalConfig);

数据源配置(DataSourceConfig)通过该配置,指定具体使用哪一个数据库;

策略配置(StrategyConfig)数据库表配置,通过该配置,可指定需要生成哪些表或者排除哪些表;

包名配置(PackageConfig) 通过该配置,指定生成代码的包路径

模板配置(TemplateConfig)模板配置,自定义模板,实现个性化操作

注入配置(InjectionConfig)通过该配置,可注入自定义参数等操作以实现个性化操作

image.png

每种配置的常用属性

  • GlobalConfig 全局配置 outputDir:生成文件的输出目录(默认是D 盘根目录)

open:是否打开输出目录(默认打开)

author:开发人员(默认null)

 GlobalConfig gc = new GlobalConfig();
 String projectPath = "D:/ideaWork/test/test-global";
 gc.setOutputDir(projectPath + "/src/main/java");
 gc.setAuthor("aaa");
 gc.setOpen(false);
  • DataSourceConfig 数据源配置 url: 驱动连接的URL

driverName: 驱动名称

userName: 用户名

password: 密码

typeConvert: 类型转换(字段类型 转换为自己需要的 java类型)

DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=GMT%2B8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123");
dsc.setTypeConvert(new MySqlTypeConvert() {
    @Override
    public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
        //将数据库中 decimal 转换成 Double
        if (fieldType.toLowerCase().contains("decimal")) {
            return DbColumnType.DOUBLE;
        }
        //将数据库中 datetime 转换成 Date
        if (fieldType.toLowerCase().contains("timestamp")) {
            return DbColumnType.DATE;
        }
        return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);
    }
});
  • StrategyConfig 策略配置 naming 数据库表映射到实体的命名策略

tablePrefix 表前缀

columnNaming 数据库表字段映射到实体的命名策略, 未指定按照 naming 执行

entityLombokModel 【实体】是否为lombok模型(默认 false)

restControllerStyle:生成 bu@RestController 控制器

include 需要包含的表名

controllerMappingHyphenStyle 驼峰转连字符

        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setTablePrefix("t_");
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setEntityLombokModel(true);
        strategy.setRestControllerStyle(true);
        strategy.setInclude("t_test1", "t_test2", "t_test3");
        strategy.setControllerMappingHyphenStyle(true);
  • PackageConfig 包配置 parent: 父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名

entity Entity包名

mapper Mapper包名

        PackageConfig pc = new PackageConfig();
        pc.setParent("com.flscode.resume");
        pc.setEntity("entity");
        pc.setMapper("dao");
        pc.setXml("dao");

由于具体的代码篇幅过长,生成代码和官网相似 但是在官方的基础上加了自己需要的一些东西 可以参考上面具体的每个配置内容 代码执行结果则会自动生成 image.png

image.png

总结

利用代码生成器快速生成 Entity、Mapper、Mapper XML、Service、Controller等代码,在开发上极大的提高了我们的开发效率 从这些配置上来看 其实最主要的配置则是数据源配置和数据表配置以及全局的配置,则三个配置在本文中没有提到的一些属性去利用官网去了解一下。还有一些实现个性化操作的配置可以通过官网去了解