如何使用默认构造函数和设置器生成 pojo

Posted

技术标签:

【中文标题】如何使用默认构造函数和设置器生成 pojo【英文标题】:How to generate pojos with default constructor and setters 【发布时间】:2019-11-21 10:21:06 【问题描述】:

首先,这是一个好主意(使用默认构造函数和设置器生成/使用 pojo)吗? 如果是,如何使用代码生成器?

我将 nu.studer.jooq Gradle 插件 (https://github.com/etiennestuder/gradle-jooq-plugin) 与 jooq 3.11.9 和一个 postgres 数据库一起使用。

// Generator
jooq 
  version = '3.11.9'
  edition = 'OSS'
  sample(sourceSets.main) 
    jdbc 
      driver = 'org.postgresql.Driver'
      url = 'jdbc:postgresql://localhost:5432/mydb'
      user = 'myuser'
      password = 'mypwd'
//      properties 
//        property 
//          key = 'ssl'
//          value = 'true'
//        
//      
    
    generator 
      name = 'org.jooq.codegen.DefaultGenerator'
      strategy 
        name = 'org.jooq.codegen.DefaultGeneratorStrategy'
      
      database 
        name = 'org.jooq.meta.postgres.PostgresDatabase'
        inputSchema = 'public'
        forcedTypes 
          forcedType 
            name = 'varchar'
            expression = '.*'
            types = 'JSONB?'
          
          forcedType 
            name = 'varchar'
            expression = '.*'
            types = 'INET'
          
        
      
      generate 
        relations = true
        deprecated = false
        records = true
        immutablePojos = true
        fluentSetters = true
      
      target 
        packageName = 'com.project.generated'
        directory = 'src/main/java'
      
    
  

提前感谢您的想法和建议。

【问题讨论】:

【参考方案1】:

首先,这是一个好主意(使用默认构造函数和设置器生成/使用 pojo)吗?

做什么的好主意? jOOQ 代码生成器不会评判您。使用默认构造函数和 getter/setter 是一种受支持的风格。不可变 POJO 是另一种。

如果是,如何使用代码生成器?

关闭immutablePojos的类型

pojos = true
immutablePojos = false

请注意,您不必将其关闭。默认是关闭它们。

【讨论】:

就是这么简单...不知道为什么,我在文档中没有找到解决方案。我会查的。非常感谢。我需要默认的构造函数和设置器,因为一些 pojo 有很长的属性列表,但只有少数是强制性的:纯美学【参考方案2】:

我刚刚发布了一个代码生成器,它完全符合您的要求。 (如果我没听错的话)

试试https://github.com/carstenSpraener/cgV19 ist 在它的 HelloWorld 示例中有一个 PoJo 生成器。支持

gradle 插件 模块化模型加载器 “墨盒”满足不同需求: 墨盒 A:Java 中的 PoJo 墨盒 B:TypeScript 中的 PoJo

【讨论】:

根据您的链接的域/URL 与您的用户名相同或包含您的用户名,您似乎已链接到您自己的内容。如果你这样做,你需要披露它是你的。如果您不透露这是您自己的内容,则通常将其视为垃圾邮件。请参阅:What signifies "Good" self promotion? 和 How to not be a spammer。

以上是关于如何使用默认构造函数和设置器生成 pojo的主要内容,如果未能解决你的问题,请参考以下文章

如何使用位置构造函数获取 C# 记录设置器的代码覆盖率

如何在构造函数中使用删除器初始化 std::unique_ptr?

8-4:C++继承之子类的默认构造函数如何使用

当带有 extract() 的 Scrapy 选择器返回 None 时如何设置默认值?

如何在不破坏移动和复制构造函数的情况下声明虚拟析构函数

交互式数据可视化-D3.js形状生成器