第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

通過 Java 中的各種篩選器組合從 SQL 查詢中獲取列

通過 Java 中的各種篩選器組合從 SQL 查詢中獲取列

溫溫醬 2022-08-03 10:44:49
我想編寫一個(gè)SQL查詢來獲取用戶請求的所有列組合。例如,對于表用戶:(ID、姓名、年齡、身高、體重)應(yīng)該可以通過參數(shù)[id,姓名],[id,姓名,年齡],[年齡,身高],...為所有組合編寫SQL查詢當(dāng)然效率太低。有沒有一種有效的方法來使用ReadkEdStatement編寫SQL查詢?類似于以下內(nèi)容: public User getByFiltered(User userDTO){    String sql = "SELECT * FROM user WHERE id=? AND age=? AND height=?";    PreparedStatement statement = dbConnectionManager.getConnection().prepareStatement(sql);    ... }但基本上可以請求列的任何組合。
查看完整描述

3 回答

?
慕少森

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊

這是你想要的嗎?


SELECT u.*

FROM user u

WHERE (id = ? OR ? IS NULL) AND

      (age = ? OR ? IS NULL) AND

      (height = ? OR ? IS NULL);

請注意,這需要在參數(shù)上加倍。


命名參數(shù)簡化了此操作:


SELECT u.*

FROM user u

WHERE (id = :id OR :id IS NULL) AND

      (age = :age OR :age IS NULL) AND

      (height = :height OR :height IS NULL);


查看完整回答
反對 回復(fù) 2022-08-03
?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

最好在沒有任何過濾器的情況下從DB中獲取所有記錄,然后在Java級別應(yīng)用邏輯


查看完整回答
反對 回復(fù) 2022-08-03
?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊

你可以這樣做:


SELECT * FROM user 

WHERE 

  (0 = ? OR id = ?) 

  AND 

  (0 = ? OR age = ?) 

  AND 

  (0 = ? OR height = ?)

當(dāng)你想搜索說和(我更喜歡cm)并且你不關(guān)心id時(shí),你傳遞以下參數(shù):age = 21height = 175


  (0 = 0 OR id = 0) 

  AND 

  (0 = 1 OR age = 21) 

  AND 

  (0 = 1 OR height = 175)

意味著 的參數(shù)將是如果該列不相關(guān)并且它是否相關(guān)(參數(shù)也可以是任何內(nèi)容)。

現(xiàn)在,因?yàn)橛?jì)算結(jié)果總是為 TRUE(因?yàn)?is ),所以它不執(zhí)行任何過濾。

但是因?yàn)槭瞧渌麠l件:并且必須是.


這樣你就有了3 + 3個(gè)參數(shù):

前3個(gè)是指示列是:

相關(guān)(所以你傳遞)

或不相關(guān)(所以你傳遞)的參數(shù)。

其他 3 個(gè)是執(zhí)行篩選的實(shí)際參數(shù)(如果該列不相關(guān),則為任何內(nèi)容)。0 = ?01id(0 = 0 OR id = 0)0 = 0TRUE0 = 1FALSEage = 21height = 175TRUE10


查看完整回答
反對 回復(fù) 2022-08-03
  • 3 回答
  • 0 關(guān)注
  • 189 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)