簡體   English   中英

在mapper文件中訪問mybatis sql中的public static final字符串

[英]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.

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