首页 > 其他分享 >在jooq的POJO类中使用Lombok的Data注解

在jooq的POJO类中使用Lombok的Data注解

时间:2025-01-03 17:33:05浏览次数:1  
标签:jooq POJO GeneratorStrategy import org Lombok out

jooq生成pojo类的配置根据官方给的如下:
https://www.jooq.org/doc/3.14/manual/getting-started/tutorials/jooq-in-7-steps/jooq-in-7-steps-step3/


如果想要使用lombok注解,需要自定义生成器。

原生的参数并不足够支持这样做。

另外一般也不需要这样做,因为更推荐把生成的代码放到 target/generated-sources 下面

自定义类如下:

import org.jooq.codegen.GeneratorStrategy;
import org.jooq.codegen.JavaGenerator;
import org.jooq.codegen.JavaWriter;
import org.jooq.meta.TableDefinition;
import org.jooq.meta.TypedElementDefinition;
import org.jooq.tools.StringUtils;

public class LombokJavaGenerator extends JavaGenerator {
    @Override
    protected void generatePojo(TableDefinition table, JavaWriter out) {
        final String className = getStrategy().getJavaClassName(table, GeneratorStrategy.Mode.POJO);

        printPackage(out, table, GeneratorStrategy.Mode.POJO);

        generatePojoClassJavadoc(table, out);

        out.println("@lombok.Data");
        out.println("public class %s {", className);

        for (TypedElementDefinition<?> column : table.getColumns()) {
            out.println("private %s%s %s;",
                    generateImmutablePojos() ? "final " : "",
                    StringUtils.rightPad(out.ref(getJavaType(column.getType(resolver(out, GeneratorStrategy.Mode.POJO)), out, GeneratorStrategy.Mode.POJO)), 0),
                    getStrategy().getJavaMemberName(column, GeneratorStrategy.Mode.POJO));
        }

        generatePojoClassFooter(table, out);

        out.println("}");
        closeJavaWriter(out);
    }

}

然后替换这个name就行
image


上面的修改使得新的POJO有几处变化:

  • 去掉了类序列化接口和号
  • 增加了lombok.Data注解
  • 去掉了构造器和copy构造方法
  • 去掉了equals方法(hashCode)
  • 去掉了所有的getter/setter
  • 去掉了toString方法
  • 去掉了字段的空格对其

这样一来,经过测试,有9个字段的表会从200多行变成30行不到。

标签:jooq,POJO,GeneratorStrategy,import,org,Lombok,out
From: https://www.cnblogs.com/somefuture/p/18650620

相关文章

  • Java 编程中 Bean、PO、POJO、VO、Entity、Model、DTO 术语全面解析对比
    术语描述特点用途BeanJava语言中可重用的组件,通常具有属性和对应的getter、setter方法等遵循JavaBean规范,具有一定的封装性和可访问性用于构建Java应用程序的各种组件,如在框架中作为配置信息的载体等PO持久化对象,通常与数据库中的表结构相对应与数据库表结构紧......
  • 12.20 每日总结(学习Lombok)
    有个问题不解,KIMI给出来我答案。学习时长两小时 解释lombok的@EqualsAndHashCode(callSuper=false)@Accessors(chain=true)的用法,给出实例  Lombok是一个Java库,它通过注解的方式在编译时自动为我们生成模板化的代码,比如getter/setter方法、equals()、hashCode()、to......
  • pojo实体bool字段不要加is前缀
    pojo实体bool字段不要加is前缀,在lombok这类工具自动的getter,setter方法时,对于布尔类型,它有自己的命名规则,boolean会把getter方法添加统一前缀is,如boolean的getter方法就是isDefault(),而如果你的字段也命名为isDefault,那么在反序化时可能出现歧义(default不是isDefault);而问题更......
  • java中VO ,O/R Mapper,PO,VO与PO区别,BO ,POJO,DAO,DTO,TO.QO,D
    一.对象分类:VO(ViewObject)视图对象:用于展示层,通常是Web页面,它从业务模型(BO)中取得数据并将数据展示给用户。VO通常包含了页面所需的所有数据,但不包含业务逻辑。O/RMapper(Object/RelationalMapping)对象/关系映射:这是一种程序设计技术,用于将对象模型映射到关系数据库模型......
  • SpringBoot的Bean类三种注入方式(附带LomBok注入)
    SpringBoot的Bean类三种注入方式(附带LomBok注入)在SpringBoot中,Bean的注入方式主要包括构造函数注入(ConstructorInjection)、字段注入(FieldInjection)以及Setter方法注入(SetterInjection)。每种注入方式都有其特点和适用场景。此外,Lombok提供了一种简化依赖注入的方......
  • lombok是怎么用的
    lombokLombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或equals方法,同时可以自动化日志变量。用大白话来讲,Lombok可以通过几个注释在编译的时候为我们的JavaBean动态的生成get,set,tostring,无参构造方法,全参数构造方法,基于buil......
  • 使用Lombok导致打印的tostring中缺少父类的属性
    背景实体类UserDtoextendsBaseEntity,两个类的上方都有标注,Lombok的@Data注解,但是使用时UserDto的实例对象调用toString方法时发现,只打印出来自身子类的属性信息,并没有打印出来父类的信息。@DatapublicclassUserDtoextendsBaseEntity{/***姓名*/@Tab......
  • Spring Boot 之 Lombok 使用详解
    Lombok是一个Java库,它通过注解自动生成样板代码,例如getter、setter、构造函数、equals()、hashCode()等,从而减少代码冗余,提高开发效率。在SpringBoot项目中使用Lombok可以使代码更加简洁易读。本文将详细介绍Lombok在SpringBoot中的使用。1.添加Lombok依赖......
  • 【Spring】lombok、dbUtil插件应用
    一、lombok插件1.功能:对实体类自动,动态生成get、set方法,无参、有参构造.....2.步骤:        (1)idea安装插件(只做一次)        (2)添加坐标        (3)编写注解                @NoArgsConstructor:无参构造          ......
  • 浅析Lombok与MapStruct的实现原理
    本篇主要从Java代码的编译视角简要去对Lombok、MapStruct的实现原理进行说明,如有谬误,恳请斧正。可能会涉及到分析的内容:编译原理反射机制APT注解处理器JSR269SPI服务发现机制一、背景概述最近,参与组内的MapStruct的替换,主要是用于优化对象拷贝、类转换这两种场景,这件......