Mybatis-plus自定义模板生成代码

本文介绍了如何在Mybatis-Plus中自定义模板生成代码,包括ID生成器配置、属性注入、使用FastAutoGenerator创建DTO,以及注意事项如避免LambdaQueryWrapper中的is,get,set错误。
摘要由CSDN通过智能技术生成


Mybatis-plus自定义模板生成代码

参考:

自定义ID生成器 | MyBatis-Plus

自定义属性注入到模板 - MyBatis Plus 教程

MyBatis Plus 代码生成器(最新版本:V3.5.3)使用指南 - 掘金

mybatis plus generator 3.5.1 从了解到自定义定制VO、PO、DTO_mybatis-plus-generator 3.5.1-CSDN博客

https://www.cnblogs.com/aland-1415/p/12979440.html

java代码生成部分:

  FastAutoGenerator.create
  ... ...
 .injectionConfig(consumer -> {
    /**自定义生成模板参数**/
    Map<String,Object> paramMap = new HashMap<>();
    paramMap.put("yourpackage","com.crabdave");//定义一个变量,方便在模板中引用
    consumer.customMap(paramMap);

    /** 自定义 生成类**/
    Map<String, String> customFile = new HashMap<>();
    CustomFile.Builder builder = new CustomFile.Builder();
    //生成到dto目录下
    builder.packageName("dto").fileName("DTO.java").templatePath("/templates/DTO.java.vm")
            .filePath("D:\\workspace\\yourproject\\src\\main\\java\\com\\crabdave\\mode")
            .enableFileOverride();//覆盖生成
    consumer.customFile(builder.build());
})
        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.5</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.5</version>
        </dependency>

模板部分:

DTO.java.vm模板文件里引用变量${yourpackage}

package ${yourpackage}.dto;

时间类型加两个格式注解


#if("$!field.propertyType" == "LocalDateTime")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private ${field.propertyType} ${field.propertyName};
#end

首字母大写

capitalName生成的首字母是大写,但对于aBcde这种转换不了,但lombok会转成ABcd
#foreach($field in ${table.fields})
  get${field.capitalName}
#end

其它

实体字段转数据表字段功能接口

Lambda表达式获取传入的方法引用的方法名_该方法仅能传入 lambda 表达式产生的合成类-CSDN博客

com.baomidou.mybatisplus.core.toolkit.StringUtils.camelToUnderline("userName");

返回 user_name

MyBatisPlus使用LambdaQueryWrapper时要注意防止出现“Didn‘t start with ‘is‘, ‘get‘ or ‘set‘“错误

"MyBatisPlus的条件构造器不会真的去调用SFunction这个函数式接口而是只解析实际的方法名.如果解析的是Lambbda表达式,那么方法名跟数据库的列名匹配不上就会报错; 如果是方法引用那么方法名通过is/gey/set规则就能找到相应的字段名然后在根据规则转换成数据库表的列名"

MyBatisPlus使用LambdaQueryWrapper时要注意防止出现“Didn‘t start with ‘is‘, ‘get‘ or ‘set‘“错误_mybatis_爱游泳的老白-华为云开发者联盟

关于lambda写法的疑问 · Issue #3986 · baomidou/mybatis-plus · GitHub

  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值