欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mybatis之mapper接口多參數(shù)方式

 更新時(shí)間:2024年05月18日 15:06:52   作者:龍卷風(fēng)愛卷  
這篇文章主要介紹了Mybatis之mapper接口多參數(shù)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Mybatis mapper接口多參數(shù)

mybatis mapper接口類可以通過五種方法接收多個(gè)參數(shù)

方法一:利用arg或param

利用arg或param獲取mapper接口類的多參數(shù)

arg可以通過#{arg0}、#{arg1}、#{arg2}…獲取接口中相對應(yīng)的參數(shù)

param可以通過#{param1}、#{param2}、#{param3}…獲取接口中相對應(yīng)的參數(shù)。

方法二:map

通過把參數(shù) 以鍵值對 的方式存儲(chǔ)到map集合中,然后把map集合作為mapper接口類的參數(shù),在mapper映射文件中編寫SQL語句需要調(diào)用參數(shù)值時(shí),可以通過map集合的key調(diào)用。

public List<User> findUserMap(Map<String, Object> parameterMap);
<select id="findUserMap" parameterType="map" resultType="user">
    <!-- concat:將多個(gè)字段連接起來,組成新的字段 -->
    select id,username from user where id=#{id} and username like concat('%',#{username},'%')
</select>

方法三:通過Java Bean傳遞多個(gè)參數(shù)

通過把參數(shù)賦值給類對象的變量,然后把類對象作為mapper接口類的參數(shù),在mapper映射文件中編寫SQL語句需要調(diào)用參數(shù)值時(shí),可以通過類對象的變量名調(diào)用。

方法四:@Param()

通過 @Param() 注解給參數(shù)加上key,在mapper映射文件中就可以通過key,所謂的key也就是@Param內(nèi)value中的值。

//mapper多參數(shù)傳入
User findUserOne(@Param(value = "username") String username, @Param("password") String password);

方法五:混合使用

在某些情況下可能需要混合使用幾種方法來傳遞參數(shù)。

舉個(gè)例子:

查詢一個(gè)角色,可以通過角色名稱和備注進(jìn)行查詢,與此同時(shí)還需要支持分頁

public List<Role> findByMix(@Param("params") RoleParams roleParams, @Param("page") PageParam PageParam);
<select id="findByMix" resultType="role">
    select id, role_name as roleName, note from t_role
    where role_name like concat('%', #{params.roleName}, '%') 
    and note like concat('%', #{params.note}, '%') 
    limit #{page.start}, #{page.limit}
</select>

解析

當(dāng)只傳一個(gè)參數(shù)時(shí),不需要@Param注解標(biāo)注key,可以省略

注意

  • 使用 map 傳遞參數(shù)導(dǎo)致了業(yè)務(wù)可讀性的喪失,導(dǎo)致后續(xù)擴(kuò)展和維護(hù)的困難,在實(shí)際的應(yīng)用中要果斷廢棄這種方式。
  • 使用 @Param 注解傳遞多個(gè)參數(shù),受到參數(shù)個(gè)數(shù)(n)的影響。當(dāng) n≤5 時(shí),這是最佳的傳參方式,它比用 Java Bean 更好,因?yàn)樗又庇^;當(dāng) n>5 時(shí),多個(gè)參數(shù)將給調(diào)用帶來困難,此時(shí)不推薦使用它。
  • 當(dāng)參數(shù)個(gè)數(shù)多于5個(gè)時(shí),建議使用 Java Bean 方式。
  • 對于使用混合參數(shù)的,要明確參數(shù)的合理性。

Mybatis mapper方法中綁定多個(gè)參數(shù)異常

1.mybatis mapper方法中綁定多個(gè)參數(shù)異常

問題如圖所示:

代碼:

Integer selectByWriteOffStatus(@RequestParam ("id") String id, @RequestParam("mobileNo") String mobileNo, @RequestParam("writeOffStatus") String writeOffStatus);

錯(cuò)誤原因分析:

沒有加@Param注解,Mapper中的參數(shù)和xml中sql語句的參數(shù)沒有對應(yīng)起來,所以會(huì)出現(xiàn)參數(shù)未找到的情況,導(dǎo)致執(zhí)行sql時(shí)無法辨識(shí)id字段

上圖使用注解不對,應(yīng)該改為@Param

擴(kuò)展:

2.@requestParam與@Param區(qū)別:

1.@RequestParam 用于controller層,是Spring的注解

標(biāo)注在Controller層方法的參數(shù)上,用來解決前端與后端參數(shù)不一致的問題。@RequestParam將請求參數(shù)和控制器方法的形參創(chuàng)建映射關(guān)系。

2.@Param 用于dao層,是mybatis中的注解

該注解標(biāo)注在dao接口中的方法參數(shù)上,用來簡化xml配置的時(shí)候(比如Mybatis的Mapper.xml中的sql參數(shù)注入),@Param注解的作用是給參數(shù)命名,參數(shù)命名后就可以通過 #{xxx} 的形式注入sql語句中(xxx為@Param給參數(shù)設(shè)置的名稱)。@Param注解是為了dao接口的方法參數(shù)和配置文件sql語句的參數(shù)保持變量名的一致性。

在mapper中如何傳遞多個(gè)參數(shù)

方法1:順序傳參法

public User selectUser(String name, int deptId);
<select id="selectUser" resultMap="UserResultMap">
    select * from user
    where user_name = #{0} and dept_id = #{1}
</select>

#{}里面的數(shù)字代表傳入?yún)?shù)的順序。

方法2:@Param注解傳參法

public User selectUser(@Param("userName") String name, int @Param("deptId") deptId);
<select id="selectUser" resultMap="UserResultMap">
    select * from user
    where user_name = #{userName} and dept_id = #{deptId}
</select>

#{}里面的名稱對應(yīng)的是注解@Param括號(hào)里面修飾的名稱。

方法3:Map傳參法

public User selectUser(Map<String, Object> params);
<select id="selectUser" parameterType="java.util.Map" resultMap="UserResultMap">
    select * from user
    where user_name = #{userName} and dept_id = #{deptId}
</select>

#{}里面的名稱對應(yīng)的是Map里面的key名稱。

方法4:Java Bean傳參法

public User selectUser(User user);
<select id="selectUser" parameterType="com.jourwon.pojo.User" resultMap="UserResultMap">
    select * from user
    where user_name = #{userName} and dept_id = #{deptId}
</select>

#{}里面的名稱對應(yīng)的是User類里面的成員屬性。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java多線程實(shí)現(xiàn)文件下載

    java多線程實(shí)現(xiàn)文件下載

    這篇文章主要為大家詳細(xì)介紹了java多線程實(shí)現(xiàn)文件下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • FeignClient中name和url屬性的作用說明

    FeignClient中name和url屬性的作用說明

    這篇文章主要介紹了FeignClient中name和url屬性的作用說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java版學(xué)生管理系統(tǒng)

    Java版學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java版學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • SpringSecurity?用戶帳號(hào)已被鎖定的問題及解決方法

    SpringSecurity?用戶帳號(hào)已被鎖定的問題及解決方法

    這篇文章主要介紹了SpringSecurity?用戶帳號(hào)已被鎖定,本文給大家分享問題原因及解決方式,需要的朋友可以參考下
    2023-12-12
  • 快速入門介紹Java中強(qiáng)大的String.format()

    快速入門介紹Java中強(qiáng)大的String.format()

    這篇文章主要給大家介紹了如何快速入門介紹Java中強(qiáng)大的String.format()的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • 利用Spring MVC+Mybatis實(shí)現(xiàn)Mysql分頁數(shù)據(jù)查詢的過程詳解

    利用Spring MVC+Mybatis實(shí)現(xiàn)Mysql分頁數(shù)據(jù)查詢的過程詳解

    這篇文章主要給大家介紹了關(guān)于利用Spring MVC+Mybatis實(shí)現(xiàn)Mysql分頁數(shù)據(jù)查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • java排查一個(gè)線上死循環(huán)cpu暴漲的過程分析

    java排查一個(gè)線上死循環(huán)cpu暴漲的過程分析

    這篇文章主要介紹了java排查一個(gè)線上死循環(huán)cpu暴漲的過程分析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java之網(wǎng)絡(luò)編程案例講解

    Java之網(wǎng)絡(luò)編程案例講解

    這篇文章主要介紹了Java之網(wǎng)絡(luò)編程案例講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Spring主配置文件(applicationContext.xml) 導(dǎo)入約束詳解

    Spring主配置文件(applicationContext.xml) 導(dǎo)入約束詳解

    在本篇文章里我們給各位整理的是關(guān)于Spring主配置文件(applicationContext.xml) 導(dǎo)入約束的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要參考下。
    2019-08-08
  • java原生動(dòng)態(tài)生成驗(yàn)證碼

    java原生動(dòng)態(tài)生成驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了java原生動(dòng)態(tài)生成驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10

最新評論