最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis的七種傳參方式示例全解析

 更新時間:2026年01月24日 14:42:49   作者:huohuopro  
MyBatis提供了七種傳參方式,包括順序傳遞參數(shù)、使用@Param注解命名傳參、使用Map傳遞多個參數(shù)、使用JavaBean對象傳參、使用JSON對象直接傳參、集合類型傳參以及對象中包含集合屬性的傳參,每種方式都有其適用場景和優(yōu)勢,感興趣的朋友一起看看吧

MyBatis 的 7 種傳參方式詳解

1. 順序傳遞參數(shù)

通過方法參數(shù)的排列順序進行傳參,適用于多個簡單類型參數(shù)。需注意在 XML 映射文件中必須按照參數(shù)順序使用 #{arg0}#{arg1}#{param1}、#{param2} 等形式引用。

Controller 層示例:

@ApiOperation(value = "多個參數(shù)查詢_匿名順序傳參")
@GetMapping("findByParams")
public ResultMsg findByParams(Short gender, String age) {
    List result = employeeMapper.selectByGenderAndAge(gender, age);
    return ResultMsg.getMsg(result);
}

Mapper 接口:

List<Employee> selectByGenderAndAge(Short gender, String age);

XML 映射配置(關鍵點:使用 param1、param2 按順序引用):

<select id="selectByGenderAndAge" resultMap="BaseResultMap">
    SELECT * FROM employee WHERE gender = #{param1} AND age = #{param2}
</select>

?? 注意:參數(shù)索引從 param1 開始,param1 對應第一個參數(shù),param2 對應第二個。

2. 使用 @Param 注解命名傳參

為解決順序傳參可讀性差的問題,可在 Mapper 接口中使用 @Param 注解為每個參數(shù)指定名稱,使 XML 中可通過語義化名稱訪問。

Mapper 接口修改:

List<Employee> selectByGenderAndAge(@Param("gender") Short gender, @Param("age") String age);

XML 映射文件(推薦寫法,清晰直觀):

<select id="selectByGenderAndAge" resultMap="BaseResultMap">
    SELECT * FROM employee WHERE gender = #{gender} AND age = #{age}
</select>
</select>

? 優(yōu)勢:代碼可讀性強,避免因參數(shù)順序錯誤導致的 SQL 異常。

3. 使用 Map 傳遞多個參數(shù)

將多個參數(shù)封裝成 Map<String, Object>,以鍵值對形式傳遞,適合參數(shù)較多或動態(tài)條件場景。

Controller 層封裝 Map:

@ApiOperation(value = "多個參數(shù)查詢_通過Map傳遞多個參數(shù)")
@GetMapping("findByMapParams")
public ResultMsg findByMapParams(Short gender, String age) {
    Map<String, Object> params = new HashMap<>();
    params.put("gender", gender);
    params.put("age", age);
    List result = employeeMapper.selectByMapParams(params);
    return ResultMsg.getMsg(result);
}

XML 配置說明:

<select id="selectByMapParams" resultMap="BaseResultMap" parameterType="map">
    SELECT * FROM employee WHERE gender = #{gender} AND age = #{age}
</select>

? 說明:parameterType="map" 可省略,MyBatis 默認支持 Map 傳參;通過 #{key} 直接取值。

4. 使用 Java Bean 對象傳參

當參數(shù)結構固定且與實體類一致時,推薦使用 Java Bean,Controller 層通過 @RequestBody 接收 JSON 數(shù)據(jù)并直接傳遞給 Mapper。

Controller 層接收對象:

@ApiOperation(value = "多個參數(shù)查詢_通過Java Bean傳遞多個參數(shù)")
@PostMapping("findByBeans")
public ResultMsg findByBeans(@RequestBody Employee employee) {
    List result = employeeMapper.selectByBeans(employee);
    return ResultMsg.getMsg(result);
}

XML 映射配置:

<select id="selectByBeans" resultMap="BaseResultMap" parameterType="com.wg.demo.po.Employee">
    SELECT * FROM employee WHERE gender = #{gender} AND age = #{age}
</select>

? 優(yōu)勢:結構清晰,自動映射屬性,適合復雜對象查詢。

5. 使用 JSON 對象直接傳參

利用 JSONObject 接收任意結構的 JSON 數(shù)據(jù),無需定義實體類,靈活性高,適用于動態(tài)查詢場景。

Controller 層處理 JSON:

@ApiOperation(value = "多個參數(shù)查詢_通過JSON傳遞多個參數(shù)")
@PostMapping("findByJSONObject")
public ResultMsg findByJSONObject(@RequestBody JSONObject params) {
    List result = employeeMapper.findByJSONObject(params);
    return ResultMsg.getMsg(result);
}

XML 配置與 Java Bean 類似:

<select id="findByJSONObject" resultMap="BaseResultMap" parameterType="com.alibaba.fastjson.JSONObject">
    SELECT * FROM employee WHERE gender = #{gender} AND age = #{age}
</select>
</select>

? 適用場景:快速開發(fā)、原型驗證、字段不固定的接口。

6. 集合類型傳參(List、Set、Array)

當需要根據(jù)集合進行 IN 查詢時,可直接傳遞集合對象,配合 <foreach> 標簽遍歷處理。

Controller 層接收集合:

@ApiOperation(value = "多個參數(shù)查詢_通過List、Set、Array傳遞多個參數(shù)")
@PostMapping("findByList")
public ResultMsg findByList(@RequestBody List<String> list) {
    List result = employeeMapper.findByList(list);
    return ResultMsg.getMsg(result);
}

XML 使用 <foreach> 構建 IN 條件:

<select id="findByList" resultMap="BaseResultMap">
    SELECT * FROM employee WHERE age IN
    <foreach collection="list" item="age" open="(" separator="," close=")">
        #{age}
    </foreach>
</select>

?? 說明:

  • collection="list":默認參數(shù)名;
  • item:循環(huán)變量名;
  • open / close:包裹符號;
  • separator:分隔符。

7. 對象中包含集合屬性的傳參

用于處理嵌套結構數(shù)據(jù),如部門對象包含員工列表,可在對象內部使用集合,并在 XML 中通過 OGNL 表達式訪問集合屬性。

Controller 層接收復合對象:

@ApiOperation(value = "多個參數(shù)查詢_對象+集合參數(shù)")
@PostMapping("findByDepartment")
public ResultMsg findByDepartment(@RequestBody Department department) {
    List result = employeeMapper.findByDepartment(department);
    return ResultMsg.getMsg(result);
}

Mapper 接口需配合 @Param 指定別名:

List<Employee> findByDepartment(@Param("department") Department department);

XML 中通過 OGNL 訪問對象內集合:

<select id="findByDepartment" resultMap="BaseResultMap" parameterType="com.wg.demo.po.Department">
    SELECT * FROM employee 
    WHERE dept_id = #{department.id} 
      AND age IN 
      <foreach collection="department.employees" item="employee" open="(" separator="," close=")">
        #{employee.age}
      </foreach>
</select>
</select>

? 技巧:使用 @Param 可提升 OGNL 表達式的可讀性和穩(wěn)定性。

?? 總結建議:

  • 參數(shù)少且簡單 → 使用 @Param
  • 參數(shù)多或結構固定 → 使用 Java Bean;
  • 動態(tài)字段或快速開發(fā) → 使用 MapJSONObject
  • 涉及 IN 查詢 → 必須使用 <foreach> 配合集合;
  • 復雜嵌套結構 → 結合 @Param 與 OGNL 表達式訪問對象屬性。

合理選擇傳參方式,可顯著提升代碼可維護性與 SQL 安全性。

到此這篇關于Mybatis的七種傳參方式示例全解析的文章就介紹到這了,更多相關Mybatis傳參方式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Springboot自定義注解&傳參&簡單應用方式

    Springboot自定義注解&傳參&簡單應用方式

    SpringBoot框架中,通過自定義注解結合AOP可以實現(xiàn)功能如日志記錄與耗時統(tǒng)計,首先創(chuàng)建LogController和TimeConsuming注解,并為LogController定義參數(shù),然后,在目標方法上應用這些注解,最后,使用AspectJ的AOP功能,通過切點表達式定位這些注解
    2024-10-10
  • WebSocket實現(xiàn)Web聊天室功能

    WebSocket實現(xiàn)Web聊天室功能

    這篇文章主要為大家詳細介紹了WebSocket實現(xiàn)Web聊天室功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Java中zip文件壓縮與解壓之ZipInputStream和ZipOutputStream

    Java中zip文件壓縮與解壓之ZipInputStream和ZipOutputStream

    這篇文章主要給大家介紹了關于Java中zip文件壓縮與解壓之ZipInputStream和ZipOutputStream的相關資料,ZipInputStream 和 ZipOutputStream 可以用于處理 ZIP文件格式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • openFeign服務之間調用保持請求頭信息處理方式

    openFeign服務之間調用保持請求頭信息處理方式

    這篇文章主要介紹了openFeign服務之間調用保持請求頭信息處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中Calendar日歷類型常見方法詳解

    Java中Calendar日歷類型常見方法詳解

    Calendar是Java中常用的時間處理工具之一,它提供了很多日歷類型常見方法,下面是一些常用的方法及對應的代碼和運行結果,感興趣的朋友一起看看吧
    2023-11-11
  • MyBatis插件機制的使用及說明

    MyBatis插件機制的使用及說明

    MyBatis插件機制通過攔截器實現(xiàn),允許開發(fā)者在不修改源代碼的情況下擴展和定制MyBatis功能,主要攔截方法包括Executor、ParameterHandler、ResultSetHandler和StatementHandler,攔截器通過XML配置或Java代碼定義,實現(xiàn)對目標對象的方法調用攔截和增強
    2026-01-01
  • Java 無符號右移與右移運算符的使用介紹

    Java 無符號右移與右移運算符的使用介紹

    這篇文章主要介紹了Java 無符號右移與右移運算符的使用介紹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Java聊天室之實現(xiàn)一個服務器與多個客戶端通信

    Java聊天室之實現(xiàn)一個服務器與多個客戶端通信

    這篇文章主要為大家詳細介紹了Java簡易聊天室之實現(xiàn)一個服務器與多個客戶端通信,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以了解一下
    2022-10-10
  • 在IDEA中啟動多個不同端口的Spring Boot應用

    在IDEA中啟動多個不同端口的Spring Boot應用

    本文主要介紹了在IDEA中啟動多個不同端口的Spring Boot應用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-10-10
  • 在Java中實現(xiàn)二叉搜索樹的全過程記錄

    在Java中實現(xiàn)二叉搜索樹的全過程記錄

    二叉樹包含了根節(jié)點,孩子節(jié)點,葉節(jié)點,每一個二叉樹只有一個根節(jié)點,每一個結點最多只有兩個節(jié)點,左子樹的鍵值小于根的鍵值,右子樹的鍵值大于根的鍵值,下面這篇文章主要給大家介紹了關于如何在Java中實現(xiàn)二叉搜索樹的相關資料,需要的朋友可以參考下
    2022-03-03

最新評論

塔河县| 沁阳市| 赞皇县| 阿克苏市| 乌拉特前旗| 西吉县| 长沙县| 彭山县| 广东省| 竹北市| 汉源县| 张家口市| 江油市| 永清县| 柳江县| 尚志市| 洛扎县| 平顺县| 溧阳市| 龙州县| 拉萨市| 龙胜| 肃南| 建瓯市| 永州市| 郁南县| 渝中区| 冕宁县| 两当县| 伊金霍洛旗| 历史| 遵化市| 汾阳市| 阳曲县| 团风县| 龙海市| 灌云县| 巴彦淖尔市| 凤山市| 施秉县| 渑池县|