MyBatis 如何接收引數

huidaoli發表於2013-08-01

MyBatis的mapper介面不需要自己實現,框架會自動幫我們實現,到時候直接呼叫就可以了。定義的mapper介面中的方法可以有多個引數嗎?答案是肯定。在Ibatis時代是自己通過程式碼實現如何呼叫xml中定義的statement,接受的引數只能是一個,所以處理的辦法通常是用Map的方式。當然這個也能使用在MyBatis上,不過MyBatis提供更加簡單的方法。下面就通過例子來說明。
Mapper介面
public interface TestMapper {
Object meth1(String para1, String para2);
/**
* p1、p2可以是任何合法的java命名方式
* xml中可以根據此標示來獲取到具體傳入的值
*/
Objectmeth2(@Param("p1")String para1, @Param("p2")Stringpara2);
}
mapper.xml
    <select id="meth1"resultType="int">
     select count * fromtest
     where col1 =#{0}
     and clo2 = #{1}
     </select>
<select id="meth2"resultType="int">
     select count * fromtest
     wherecol1 = #{p1}
     and clo2 =#{p2}
     </select>
上述兩種方法都行的通,上述statement中不需要指定parameterType。如果不使用@Param註解方式,那麼可以通過#{0}、#{1}的方式來獲取引數的值,注意function中的第一個引數是0;使用了註解就按註解中定義的名字來取。推薦使用註解的方式。在方法重構時,例如增加、減少或調整引數的順序,如果使用非註解的方式,在修改xml時就顯得比較麻煩,可能裡面的${0}、${1}、${2}都需要調整,而且不明確,特別是引數較多的情況下。

相關文章