簡體   English   中英

sql / jdbc查詢中的動態列

[英]Dynamic column in sql/jdbc query

我是計算機科學系的學生。 現在,我正在使用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
抽搐-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM