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

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

MyBatis 解析具有多個(gè)語句的參數(shù)

MyBatis 解析具有多個(gè)語句的參數(shù)

森欄 2023-09-13 18:03:11
我正在嘗試使用 MyBatis 和 PostgreSQL 動(dòng)態(tài)設(shè)置查詢的鎖定超時(shí)。我的映射器看起來像: @Select("SET LOCAL lock_timeout = '#{lockTimeout}s';"   + "SELECT ......where id= #{myId} FOR UPDATE") MyObject select(@Param("lockTimeout") String lockTimeout, @Param("myId") String id);似乎參數(shù)不匹配,我得到了一個(gè) org.postgresql.util.PSQLException: Index of column out of range : 2, number of column 1.@SelectProvider在我的情況下不匹配,因?yàn)槲业膮?shù)鎖定超時(shí)不是靜態(tài)的。有誰知道如何動(dòng)態(tài)設(shè)置參數(shù)鎖定超時(shí)?
查看完整描述

1 回答

?
慕哥9229398

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

pgjdbc 似乎獨(dú)立執(zhí)行每個(gè)語句。

我不建議將多個(gè)語句放入單個(gè)映射器語句中,因?yàn)樾袨槿Q于驅(qū)動(dòng)程序。

您應(yīng)該聲明兩個(gè)方法并在同一會(huì)話/事務(wù)中調(diào)用它們。


@Update("select set_config('lock_timeout', #{lockTimeout}, true)")

void setLockTimeout(String lockTimeout);


@Select("SELECT ......where id= #{myId} FOR UPDATE")

MyObject select(@Param("myId") String id);

一些注意事項(xiàng):

  • set_config()被用作似乎SET LOCAL不適用于 a PreparedStatement。

  • @Update用于立即應(yīng)用更改。如果您使用@Select,您可能需要SqlSession#commit()顯式調(diào)用。

  • 與您的示例不同,該參數(shù)必須包含sie setLockTimeout("1s")
    如果您只想傳遞一個(gè)數(shù)字,#{lockTimeout} || 's'應(yīng)該可以。


查看完整回答
反對(duì) 回復(fù) 2023-09-13
  • 1 回答
  • 0 關(guān)注
  • 123 瀏覽

添加回答

舉報(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)