gpt4 book ai didi

java - sql/jdbc 查询中的动态列

转载 作者:搜寻专家 更新时间:2023-10-30 20:17:28 24 4
gpt4 key购买 nike

我是计算机科学专业的学生。现在我正在用 jdbc 做一个项目。我必须在数据库中创建表格 - USERROLE

其中每个 USER 都有一个或多个 ROLE。我将 ROLE.ID(主键或 ROLE)保存在 USER.ROLE_ID 列中。

在 java 代码级别,我还有两个实体类 - User.javaRole.java。我可以通过连接这些表来进行简单的 SQL 查询。

请看下面的查询-

1.USER.NAME='admin' 选择 USER.NAMEROLE.NAME -

SELECT USER.NAME, ROLE.NAME FROM USER, ROLE
WHERE USER.ROLE_ID = ROLE.ROLE_ID
AND USER.NAME='admin';

2.USER.NAME='admin' 选择 USER.IDROLE.ID -

SELECT USER.ID, ROLE.ID FROM USER, ROLE
WHERE USER.ROLE_ID = ROLE.ROLE_ID
AND USER.NAME='admin';

我必须针对我选择的不同列进行 2 个不同的查询。这里的大部分查询都是相同的。我的问题是我可以做些什么,以便我可以使用单个查询动态选择不同类型的列(在第一种情况下 - USER.NAME、ROLE.NAME 和第二种情况 USER.ID、ROLE.ID)类型的列?

最佳答案

不,您不会从 JDBC 获得任何类似的东西。您必须为此编写自定义函数。
在我看来,你应该只创建一个函数,它接受两个参数或相同的重载函数,然后为它们提供参数。
在这里,我为您提供了一些逻辑伪代码

        function getData(Param tableName, Param column1, Param column2){
String sql = "SELECT "+column1+"','"+column2+"'
FROM `" + tableName + "` WHERE "+column1+" = "+column2;
}

//overloaded
function getData(Param tableName, Param column1, Param column2,Param column3){
String sql = "SELECT "+column1+"','"+column2+"','"column3+"'
FROM `" + tableName + "` WHERE "+column1+" = "+column2;
}


但如果您准备好使用一些 API,那么我可以建议您使用两个非常好的 API 来赢得您的场景。你应该试试
Querydsl
JOOQ
Apache ddlUtils
squiggle-sql
JaQu
.

关于java - sql/jdbc 查询中的动态列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31264473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com