首頁 > 軟體

mybatisplus中的xml物件引數傳遞問題

2022-11-28 22:00:29

mybatisplus中的xml物件引數傳遞

如果是一般型別的引數,直接把型別加上,在xml的sql中通過#{}或者${}的方式引入就行了,如果是一個java物件,在mapper的引數前面加上@Param註解,給定引數名,在xml中直接呼叫。

舉個栗子

下面是mapper的介面的一個方法

List<DesHistoryVo> getHistory(@Param("dto") HistoryQueryDto dto);

接著在xml中呼叫dto物件的屬性

省略...
and supplier_id = ${dto.supplierId}
省略...

在select或者是其它xml標籤中,記得填寫parameterType引數的型別,也就是全類名,直接右鍵物件,copy reference就行了。

另外,可以根據sql輸出的列,可以直接將物件轉換為給定的物件,入頁面展示需要的Vo物件,這時就需要設定resultType引數,同樣,也是物件的全類名。

mybatis傳遞引數四種方式

方式一、順序傳遞引數

mapper.java檔案:

public User selectUser(String name, int deptId);

mapper.xml檔案:

<select id="selectUser" resultType="com.wyj.entity.po.User">
    select * from user where userName = #{0} and deptId = #{1}
</select>

注意:裡面的數位代表你傳入引數的順序,不是特別建議使用這種方法傳遞引數,特別是引數個數多的時候

方式二、註解@Param傳遞引數

mapper.java檔案:

public User selectUser(@Param("userName") String name, int @Param("deptId") id);

mapper.xml檔案:

<select id="selectUser" resultType="com.wyj.entity.po.User">
    select * from user where userName = #{userName} and deptId = #{deptId}
</select>

注意:在xml檔案中就只能以在@Param註解中宣告的引數名稱獲取引數

方式三、使用Map集合傳遞引數

mapper.java檔案:

public User selectUser(Map<String, Object> params);

mapper.xml檔案:

<select id="selectUser" parameterType="java.util.Map" resultType="com.wyj.entity.po.User">
    select * from user where userName = #{userName} and deptId = #{deptId}
</select>

方式四、使用JavaBean實體類傳遞引數

mapper.java檔案:

public User selectUser(User user);

mapper.xml檔案:

<select id="selectUser" parameterType="com.wyj.entity.po.User" resultType="com.wyj.entity.po.User">
    select * from user where userName = #{userName} and deptId = #{deptId}
</select>

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com