Java sql/jdbc查询中的动态列

Java sql/jdbc查询中的动态列,java,mysql,database,jdbc,Java,Mysql,Database,Jdbc,我是计算机科学的学生。现在我正在与jdbc合作一个项目。我必须在数据库中创建表-用户,角色 其中每个用户都有一个或多个角色。我将ROLE.ID(主键或ROLE)保存在USER.ROLE\u ID列中 在java代码级别,我还有两个实体类-User.java和Role.java。我可以通过连接这些表来进行简单的SQL查询 请参阅以下查询- 1.选择USER.NAME和ROLE.NAME作为USER.NAME='admin'- SELECT USER.NAME, ROLE.NAME FROM USE

我是计算机科学的学生。现在我正在与jdbc合作一个项目。我必须在数据库中创建表-
用户
角色

其中每个
用户
都有一个或多个
角色
。我将
ROLE.ID
(主键或
ROLE
)保存在
USER.ROLE\u ID
列中

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

请参阅以下查询-

1.选择
USER.NAME
ROLE.NAME
作为
USER.NAME='admin'
-

SELECT USER.NAME, ROLE.NAME FROM USER, ROLE
   WHERE USER.ROLE_ID = ROLE.ROLE_ID
   AND USER.NAME='admin';
SELECT USER.ID, ROLE.ID FROM USER, ROLE
   WHERE USER.ROLE_ID = ROLE.ROLE_ID
   AND USER.NAME='admin';  
2.选择
USER.ID
ROLE.ID
作为
USER.NAME='admin'
-

SELECT USER.NAME, ROLE.NAME FROM USER, ROLE
   WHERE USER.ROLE_ID = ROLE.ROLE_ID
   AND USER.NAME='admin';
SELECT USER.ID, ROLE.ID FROM USER, ROLE
   WHERE USER.ROLE_ID = ROLE.ROLE_ID
   AND USER.NAME='admin';  
我必须对我选择的不同列进行两次不同的查询。这里的大多数查询都是相同的。我的问题是,我可以做些什么,以便使用单个查询动态选择不同类型的列(第一种情况是USER.NAME、ROLE.NAME,第二种情况是USER.ID、ROLE.ID)

怎么样

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


老实说,我并不真正理解这里的问题。

不,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来赢得您的场景。您应该尝试一下






您可以在单个查询中使用所有这4列。您还需要什么?如果您对数据库或JDBC有一些了解,那么这不是一个困难的问题。他想要一些类似于预先准备好的声明,但以某种动态的方式感谢API链接