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

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

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

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

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

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

注解中的參數(shù):

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

一、@SelectProvider

@ResultMap注解用于從查詢結(jié)果集RecordSet中取數(shù)據(jù)然后拼裝實(shí)體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}");
? ? }
}

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

而對(duì)應(yīng)的SQL語(yǔ)句則寫(xiě)在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方法類中,不要使用重載,也就是說(shuō),不要使用方法名相同參數(shù)不同的方法。

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

相關(guān)文章

  • Java Arrays.asList使用方法解析

    Java Arrays.asList使用方法解析

    這篇文章主要介紹了Java Arrays.asList使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • IDEA多線程文件下載插件開(kāi)發(fā)的步驟詳解

    IDEA多線程文件下載插件開(kāi)發(fā)的步驟詳解

    這篇文章主要介紹了IDEA多線程文件下載插件開(kāi)發(fā)的步驟詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java開(kāi)發(fā)JUC交換器Exchanger使用詳解

    Java開(kāi)發(fā)JUC交換器Exchanger使用詳解

    這篇文章主要為大家介紹了Java開(kāi)發(fā)JUC交換器Exchanger使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 用Set類判斷Map里key是否存在的示例代碼

    用Set類判斷Map里key是否存在的示例代碼

    本篇文章主要是對(duì)用Set類判斷Map里key是否存在的示例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • Java日期時(shí)間格式化操作DateUtils 的整理

    Java日期時(shí)間格式化操作DateUtils 的整理

    這篇文章主要介紹了Java日期時(shí)間格式化操作DateUtils 的整理的相關(guān)資料,這里總結(jié)了java日期格式化的操作,需要的朋友可以參考下
    2017-07-07
  • Netty源碼分析NioEventLoop初始化線程選擇器創(chuàng)建

    Netty源碼分析NioEventLoop初始化線程選擇器創(chuàng)建

    這篇文章主要介紹了Netty源碼分析NioEventLoop初始化線程選擇器創(chuàng)建,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • 使用Spring的JAVA Mail支持簡(jiǎn)化郵件發(fā)送功能

    使用Spring的JAVA Mail支持簡(jiǎn)化郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了使用Spring的JAVA Mail支持簡(jiǎn)化郵件發(fā)送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 基于java類路徑classpath和包的實(shí)例講解

    基于java類路徑classpath和包的實(shí)例講解

    下面小編就為大家分享一篇基于java類路徑classpath和包的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Springboot實(shí)現(xiàn)Java郵件任務(wù)過(guò)程解析

    Springboot實(shí)現(xiàn)Java郵件任務(wù)過(guò)程解析

    這篇文章主要介紹了Springboot實(shí)現(xiàn)Java郵件任務(wù)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Java?輪詢鎖使用時(shí)遇到問(wèn)題解決方案

    Java?輪詢鎖使用時(shí)遇到問(wèn)題解決方案

    這篇文章主要介紹了Java?輪詢鎖使用時(shí)遇到問(wèn)題解決方案,當(dāng)我們遇到死鎖之后,除了可以手動(dòng)重啟程序解決之外,還可以考慮使用順序鎖和輪詢鎖,但是過(guò)程也會(huì)遇到一些問(wèn)題,接下來(lái)我們一起進(jìn)入下面文章了解解決方案,需要的小伙伴可以參考一下
    2022-05-05

最新評(píng)論