标签: jooq

如何使用 jooq 在没有数据库连接的情况下生成 sql

我正在玩一些 jooq 代码。我注意到使用 jooq 创建 sql 它会强制您创建数据库连接。想知道如何在没有数据库连接的情况下执行此操作:

String url = env.getProperty("spring.datasource.url");
String user = env.getProperty("spring.datasource.username");
String pass = env.getProperty("spring.datasource.password");

try (Connection conn = DriverManager.getConnection(url, user, pass)) {
    DSLContext create = DSL.using(conn, SQLDialect.SQLSERVER2014);
    String sql = create.select().from(DATA1).offset(100).limit(20).getSQL();
}
catch (Exception e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

java jooq spring-boot

1
推荐指数
1
解决办法
1113
查看次数

在 Jooq 中集成 Hikari Pool

我试图在我当前的项目(用 Java 编写)中第一次使用 jooq。我想在 Jooq DSL 上下文中集成 Hikari 连接池。我想明确定义最大连接数。任何推荐的文章,我可以遵循的代码来完成它。

谢谢

我已经设置了 jooq,现在我可以为我的数据库生成代码。

   public  static void init() {

        Target l_target =   new Target();
        System.out.println("My directory is::"+l_target.getPackageName());
        l_target.setDirectory("src/main/java");
        l_target.setPackageName("com.my.paas.css.entity");
        Configuration configuration = new Configuration()
                .withJdbc(new Jdbc()
                        .withDriver("com.mysql.jdbc.Driver")
                        .withUrl("jdbc:mysql://localhost:3306/paas")
                        .withUser("root"))
                .withGenerator(new Generator()
                        .withDatabase(new Database()
                                .withName("org.jooq.meta.mysql.MySQLDatabase")
                                .withIncludes(".*")
                                .withExcludes("")
                                .withInputSchema("paas"))
                        .withTarget(l_target));

        try {
            GenerationTool.generate(configuration);
        } catch (Exception ex) {
            System.out.println();
            ex.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

mysql database jooq java-8

1
推荐指数
1
解决办法
1943
查看次数

MyBatis 和 jOOQ 之间的不同用例和技术差异

据我所知,MyBatis 和 jOOQ 用于类似的情况。所以我想知道什么时候应该在 Spring 应用程序中使用 jOOQ 而不是 MyBatis,以及每个库和框架在开发时带来的技术优缺点。

如果有人已经熟练使用 MyBatis 这样的框架编写 SQL 查询,那么切换到 jOOQ 会给他们带来什么技术优势(查询运行时、编译时错误)?

java database spring mybatis jooq

1
推荐指数
1
解决办法
1959
查看次数

jooq 在极少数情况下生成不正确的 sql

我有一个 Spring Cloud Gateway 应用程序将身份验证数据保存到数据库。应用程序在 kubernetes 中运行。我有太多不同的情况,有时我有 json 数据要保存,有时 json 数据为空。保存此数据的代码如下所示:

    with(AUTHENTICATED_SESSION) {
        context.insertInto(this, ACCESS_TOKEN_MD5_HASH, REFRESH_TOKEN, CONTEXT_DATA)
            .values(
                accessTokenMd5,
                refreshToken,
                if (contextData != null) {
                    JSONB.jsonb(objectMapper.writeValueAsString(contextData))
                } else {
                    null
                }
            )
            .execute()
    }
Run Code Online (Sandbox Code Playgroud)

生成的列定义

public final TableField<AuthenticatedSessionRecord, JSONB> CONTEXT_DATA = createField(DSL.name("context_data"), SQLDataType.JSONB, this, "");
Run Code Online (Sandbox Code Playgroud)

保存空值通常应该像这样:

insert into "public"."authenticated_session" ("access_token_md5_hash", "refresh_token", "context_data") values (?, ?, cast(? as jsonb))
    : -> with bind values      : insert into "public"."authenticated_session" ("access_token_md5_hash", "refresh_token", "context_data") values ('hash', 'token', cast(null as jsonb))
Run Code Online (Sandbox Code Playgroud)

有时查询看起来像这样,它会导致下面的异常

insert into "public"."authenticated_session" …
Run Code Online (Sandbox Code Playgroud)

postgresql jooq kotlin spring-boot spring-cloud-gateway

1
推荐指数
1
解决办法
522
查看次数