[英]Dynamic column in sql/jdbc query
我是计算机科学系的学生。 现在,我正在使用jdbc进行项目。 我必须在数据库中使用表USER
, ROLE
。
每个USER
都有一个或多个ROLE
。 我将ROLE.ID
(主键或ROLE
)保存在USER.ROLE_ID
列中。
在Java代码中的水平,我有两个实体类也- User.java
和Role.java
。 我可以通过加入这些表来进行简单的SQL查询。
请查看以下查询-
1.为USER.NAME='admin'
选择USER.NAME
和ROLE.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.ID
和ROLE.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
抽搐-SQL
JaQu
。
关于什么
SELECT USER.ID, USER.NAME, ROLE.ID, ROLE.NAME FROM USER, ROLE
WHERE USER.ROLE_ID = ROLE.ROLE_ID
AND USER.NAME='admin';
?
老实说,我真的没有这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.