[英]Access public static final string in mybatis sql in mapper files
我有一個用MyBatis映射文件寫的sql,它是這樣的:
<select id="somesql">
select a,b,c from tbl_name where d = ?
</select>
d
的占位符值應該是在名為Constants.java
的文件中聲明的Constants.java
:
public static final String d = "d_value";
如何在不實際傳遞<select>
構造中的參數的情況下用值替換占位符? 我試過#{com.pkg.name.Constants.d}
但它沒有用。
沒有硬編碼!!!
<select id="getConvenienceStoreList" resultType ="Store">
SELECT * FROM Store
WHERE type = ${@foo.product.constant.StoreType@CONVENIENCE_STORE}
ORDER BY id
LIMIT #{start}, #{limit}
</select>
參考: http : //qiita.com/ApplePedlar/items/12dc389cc32f3db5557a
有了MyBatis的開箱即用的行為,據我所知,你做不到。
您可以嘗試為ParameterHandler編寫一個攔截器並在那里注入值,但這並不總是可行,因為您只能在參數處理程序上使用兩個方法:
getParameterObject
,它返回發送給查詢的參數(可以是常量,字符串,映射,自定義對象,甚至是null,就像您不發送參數的示例一樣) setParameters
我猜你可以嘗試設置參數,如果你知道它在准備好的語句中的位置(大多數時候你可能沒有)。 我的建議是將它作為參數傳遞給您的查詢。 MyBatis的攔截器功能沒有很好的記錄,所以你可能從一開始就沒有得到正確的工作組合,你最終可能會遇到比它更值得的麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.