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

關(guān)于mybatis3中幾個@Provider的使用方式

 更新時間:2022年07月06日 09:26:18   作者:一問三不知。  
這篇文章主要介紹了關(guān)于mybatis3中幾個@Provider的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Mybatis的原身是ibatis,現(xiàn)在已經(jīng)脫離了apache基金會,新官網(wǎng)是http://www.mybatis.org/

Mybatis3中增加了使用注解來配置Mapper的新特性,這里主要介紹@SelectProvider、@UpdateProvider、@InsertProvider和@DeleteProvider的使用方式

這幾個注解聲明在Mapper對應(yīng)的interface的方法上的,注解用于生成查詢用的sql語句。如果對應(yīng)的Mapper中已使用@Param來注解參數(shù),則在對應(yīng)的Prodiver的方法中無需寫參數(shù)。

注解中的參數(shù):

  • type參數(shù)指定的Class類,必須要能夠通過無參的構(gòu)造函數(shù)來初始化;
  • method參數(shù)指定的方法,必須是public的,返回值必須為String,可以為static。

一、@SelectProvider

@ResultMap注解用于從查詢結(jié)果集RecordSet中取數(shù)據(jù)然后拼裝實體bean。

public interface UserMapper {
? ? ?@SelectProvider(type = SqlProvider.class, method = "selectUser")
? ? ?@ResultMap("userMap")
? ? ?public User getUser(long userId);
}
public class SqlProvider {
? ? public String selectUser(long userId){
? ? ? ? ?SELECT("id, name, email");
? ? ? ? ? FROM("USER");
? ? ? ? ? WHERE("ID = #{userId}");
? ? }
}

上例中定義了一個Mapper接口,其中定義了一個getUser方法,這個方法根據(jù)用戶id來獲取用戶信息,并返回相應(yīng)的User。

而對應(yīng)的SQL語句則寫在SqlProvider類中。

二、@InsertProvider

public interface UserMapper {
? ? @InsertProvider(type = SqlProvider.class, method = "addUser")
? ? @Options(useGeneratedKeys = true, keyProperty = "id")
? ? int addUser(Tutor tutor);
}
public class SqlProvider {
? ? public String addUser(User user) {
? ? ? ? return new SQL() {
? ? ? ? ? ? {
? ? ? ? ? ? ? ? INSERT_INTO("USER");
? ? ? ? ? ? ? ? if (user.getName() != null) {
? ? ? ? ? ? ? ? ? ? VALUES("NAME", "#{name}");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (user.getEmail() != null) {
? ? ? ? ? ? ? ? ? ? VALUES("EMAIL", "#{email}");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }.toString();
? ? }
}

三、@UpdateProvider

public interface UserMapper {
? ? @UpdateProvider(type = SqlProvider.class, method = "updateUser")
? ? int updateUser(User user);
}
public class SqlProvider {
? ? public String updateUser(User user) {
? ? ? ? return new SQL() {
? ? ? ? ? ? {
? ? ? ? ? ? ? ? UPDATE("USER");
? ? ? ? ? ? ? ? if (user.getName() != null) {
? ? ? ? ? ? ? ? ? ? SET("NAME = #{name}");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (user.getEmail() != null) {
? ? ? ? ? ? ? ? ? ? SET("EMAIL = #{email}");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? WHERE("ID= #{id}");
? ? ? ? ? ? }
? ? ? ? }.toString();
? ? }
}

四、@DeleteProvider

public interface UserMapper {
? ? @DeleteProvider(type = SqlProvider.class, method = "deleteUser")
? ? int deleteUser(int id);
}
public class SqlProvider {
? ? public String deleteUser(int id) {
? ? ? ? return new SQL() {
? ? ? ? ? ? {
? ? ? ? ? ? ? ? DELETE_FROM("USER");
? ? ? ? ? ? ? ? WHERE("ID= #{id}");
? ? ? ? ? ? }
? ? ? ? }.toString();
? ? }
}

注意:在Mapper接口和@SelectProvide方法類中,不要使用重載,也就是說,不要使用方法名相同參數(shù)不同的方法。

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

相關(guān)文章

  • 解決SpringBoot使用@Value獲取不到y(tǒng)aml中配置值的問題

    解決SpringBoot使用@Value獲取不到y(tǒng)aml中配置值的問題

    在最近的開發(fā)中遇到一個問題,使用@Value獲取yml文件中配置的屬性時始終獲取不到值,所以本文給大家詳細(xì)介紹了SpringBoot使用@Value獲取不到y(tǒng)aml中值的問題分析及解決方法,需要的朋友可以參考下
    2024-01-01
  • mybatis?實現(xiàn)多層級collection嵌套

    mybatis?實現(xiàn)多層級collection嵌套

    這篇文章主要介紹了mybatis?實現(xiàn)多層級collection嵌套,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • JAVA代碼開發(fā)規(guī)范

    JAVA代碼開發(fā)規(guī)范

    本文主要對JAVA代碼開發(fā)規(guī)范進行詳細(xì)介紹,具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • Spring工作原理簡單探索

    Spring工作原理簡單探索

    這篇文章主要介紹了Spring工作原理簡單探索,涉及Springaop與IOC,動態(tài)代理靜態(tài)代理,反射等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • echarts圖表導(dǎo)出excel示例

    echarts圖表導(dǎo)出excel示例

    這篇文章主要介紹了echarts圖表導(dǎo)出excel示例,需要的朋友可以參考下
    2014-04-04
  • RocketMQ重試機制及消息冪代碼實例解析

    RocketMQ重試機制及消息冪代碼實例解析

    這篇文章主要介紹了RocketMQ重試機制及消息冪代碼實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • SpringBoot中使用RocketMQ的示例代碼

    SpringBoot中使用RocketMQ的示例代碼

    本文主要介紹SpringBoot中使用RocketMQ的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • SpringBoot3中Spring?WebFlux?SSE服務(wù)器發(fā)送事件的實現(xiàn)步驟

    SpringBoot3中Spring?WebFlux?SSE服務(wù)器發(fā)送事件的實現(xiàn)步驟

    本文介紹了如何使用SpringBoot3和響應(yīng)式編程實現(xiàn)服務(wù)器發(fā)送事件(SSE),并討論了其在實時數(shù)據(jù)推送場景中的優(yōu)勢,通過示例代碼,展示了如何創(chuàng)建SSE控制器、客戶端接收數(shù)據(jù)以及優(yōu)化與擴展,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • JavaWeb實現(xiàn)用戶登錄與注冊功能(服務(wù)器)

    JavaWeb實現(xiàn)用戶登錄與注冊功能(服務(wù)器)

    這篇文章主要介紹了JavaWeb實現(xiàn)用戶登錄與注冊功能,服務(wù)器部分的關(guān)鍵代碼實現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • java實現(xiàn)字符串的全排列

    java實現(xiàn)字符串的全排列

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)字符串的全排列,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評論

潮安县| 河池市| 保靖县| 凌源市| 福清市| 唐海县| 丹阳市| 安泽县| 光泽县| 牡丹江市| 繁峙县| 钟祥市| 仁化县| 上饶县| 揭阳市| 黔东| 尼勒克县| 达尔| 沾化县| 白银市| 井研县| 阜宁县| 大关县| 辽阳市| 嘉禾县| 昆山市| 离岛区| 大同市| 马尔康县| 忻州市| 平度市| 唐山市| 金平| 铁岭市| 方山县| 张掖市| 常山县| 广灵县| 蓬安县| 磐石市| 彭山县|