【发布时间】:2021-06-08 09:32:51
【问题描述】:
我有一个问题。最近有人告诉我如果我与数据库交互就使用 JOOQ,所以我一直在修改我的代码以与 JOOQ 正常工作,但我正在努力解决如何从数据库中选择数据并返回它的方式。我有以下SqlConn 类:
package com.company.database;
import org.jooq.DSLContext;
import org.jooq.Result;
import org.jooq.Record;
import org.jooq.SQLDialect;
import org.jooq.impl.DSL;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import java.sql.*;
import java.util.HashMap;
public class SqlConn {
private final String SERVER = "database.me:3306";
private final String DATABASE = "testdb";
private final String USERNAME = "test";
private final String PASSWORD = "test";
private final String URL = "jdbc:mysql://" + SERVER + "/" + DATABASE;
public HashMap<String, String> getMarketCoins() {
HashMap<String, String> returnValue = new HashMap<>();
try (Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD)) {
DSLContext create = DSL.using(conn, SQLDialect.MYSQL);
Result<Record> result = create.select().from("MarketCoins").fetch();
for (Record r : result) {
returnValue.put(r.getValue("Market").toString(), r.getValue("Coin").toString());
}
}
catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
}
现在这段代码可以正常工作,但这只是一个从 1 个特定表中收集数据的函数。我之前的代码是构建的,我可以提供一个查询,代码将执行查询并返回结果,但是使用新的 JOOQ 方法,我似乎需要为每个不同的查询和表创建一个函数。我看了这个关于 JOOQ 的初学者教程:https://www.youtube.com/watch?v=4H3AGK_hNMA,但在这个视频中,他还为不同的数据库调用创建了多个函数。这是正确的,还是有更好的方法可以轻松地从我的数据库中获取数据,无论哪个表都无关紧要?我的数据库中有很多表,所以这意味着我需要编写很多函数:(
请告诉我!
【问题讨论】:
-
在jOOQ之前你是怎么做到的?