【问题标题】:JOOQ JSON-ResultSetJOOQ JSON-ResultSet
【发布时间】:2018-04-18 22:28:05
【问题描述】:

我有一个 Java 应用程序,它使用 JDBC 和 ResultSet 从 MySql 数据库中获取数据。我有一个 DB 通信子系统,它将接收要执行的存储过程的名称、参数列表并简单地返回包含所有请求数据的“ResultSet”。

现在,我想开始使用 JOOQ,但我不想在每个处理数据库结果的地方都更改这个庞大的应用程序,我宁愿只对负责直接数据库通信的系统的一部分进行 JOOQ 化。这意味着,从“外部”(系统的其余部分)来看,一切都应该是相同的 - 过程接收要执行的存储过程的名称和参数列表,JOOQ 完成它并返回 ResultSet 以保持完全兼容性。

我知道如何使用 JOOQ 将 ResultSet 转换为 JSON,但是您知道如何将 JOOQ 提供给我的 JSON 转换为 ResultSet 吗?

【问题讨论】:

    标签: java jdbc jooq


    【解决方案1】:

    如何将 JOOQ 提供给我的 JSON 转换为 ResultSet?

    我假设您的意思是此处记录的 jOOQ 的 JSON 导出格式: https://www.jooq.org/doc/latest/manual/sql-execution/exporting/exporting-json

    您可以使用 DSLContext.fetchFromJSON() 轻松地将其重新导入到 jOOQ Result 中,然后,Result 可以通过 Result.intoResultSet() 包装到 JDBC ResultSet 中:

    ResultSet rs = ctx.fetchFromJSON(json).intoResultSet();
    

    【讨论】:

    • 太棒了!谢谢!没有 DSLContext 有可能吗?在理想情况下,我将在服务器端使用 JOOQ 部分,将 JSON 格式的数据库数据发送到远程客户端(在理想情况下),无需为此转换重新建立数据库连接。我看到的唯一问题是,为了使用 DSLContext,我必须打开一个数据库连接,对吗?我不能使用没有“虚拟”上下文?
    • 为什么要避免使用DSLContext?如果这是关于没有连接,只需写DSL.using(sqldialect) 甚至DSL.using(new DefaultConfiguration()),你就会得到一个“分离”DSLContext
    猜你喜欢
    • 2020-02-23
    • 2014-11-29
    • 2013-01-05
    • 2014-09-23
    • 2019-08-30
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    相关资源
    最近更新 更多