close

在Liferay中進行自定義Sql查詢的方式,除了上一篇的直接使用finderImpl並且定義Sql字串以外,我們還可以使用custom-sql。

使用custom的好處在於我們可以將查詢字串寫在一個xml中,查詢時將關鍵字帶入,其功能就跟finder一樣。

 

以liferay的user資料表來說,如果我今天想要用userId跟screenName來查詢,大致如下;

 

custom1  

首先在src路徑底下新增custom-sql資料夾,並且新增一個default.xml,內容如下;

 

內容是單純的查詢語句,如果說有多種不同資料庫的可能性,那就新增多個對應的xml,並且在default.xml內對應;

<custom-sql>
      <sql file="custom-sql/mysql_finder.xml"/>
</custom-sql>

接著在mysql_finder.xml內寫查詢語句就可以。

 

然後便要回到finderImpl中,新增一個method如下;

 

最後只要在我們自訂所產生的xxxLocalServiceImpl定義一個method並且呼叫此查詢方法就可以;

 

如果今天要取得資料筆數的count,我們可以新增一組sql語句取得count,內容類似於前面的主查詢,

finder內的方法最後也可改成如下;

 

同樣也在localserviceimpl定義並使用該方法做查詢就可以,另外sqlQuery有一個方法如下;

sqlQuery.addScalar(arg0, arg1)

此方法可以定義一個自訂的欄位,並且將查詢對應的值帶入,可以讓我們的查詢更為彈性,目前尚未實際應用此api,先記錄下有此法可用。

arrow
arrow
    全站熱搜

    squall75726 發表在 痞客邦 留言(1) 人氣()