關于mybatis3中幾個@Provider的使用方式

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

Mybatis的原身是ibatis,現在已經脫離了apache基金會,新官網是http://www.mybatis.org/。

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

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

注解中的參數:

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

一、@SelectProvider

@ResultMap注解用于從查詢結果集RecordSet中取數據然后拼裝實體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方法,這個方法根據用戶id來獲取用戶信息,并返回相應的User。

而對應的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方法類中,不要使用重載,也就是說,不要使用方法名相同參數不同的方法。

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

相關文章

  • java 配置MyEclipse Maven環境具體實現步驟

    java 配置MyEclipse Maven環境具體實現步驟

    這篇文章主要介紹了 java 配置MyEclipse Maven環境具體實現步驟的相關資料,具有一定的參考價值,需要的朋友可以參考下
    2016-11-11
  • java郵件發送的實現

    java郵件發送的實現

    本篇是用于java來實現郵件的發送的實例代碼,基于smtp服務,有需要的可以參考一下。
    2016-10-10
  • Springboot 使用內置tomcat禁止不安全HTTP的方法

    Springboot 使用內置tomcat禁止不安全HTTP的方法

    這篇文章主要介紹了Springboot 使用內置tomcat禁止不安全HTTP的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring Boot + Vue 前后端分離項目如何踢掉已登錄用戶

    Spring Boot + Vue 前后端分離項目如何踢掉已登錄用戶

    這篇文章主要介紹了Spring Boot + Vue 前后端分離項目如何踢掉已登錄用戶,需要的朋友可以參考下
    2020-05-05
  • Java讀取文件方法匯總

    Java讀取文件方法匯總

    這篇文章主要為大家詳細介紹了Java讀取文件方法,按字節讀取文件內容、按字符讀取文件內容、隨機讀取文件內容等,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Spring Cloud中使用Feign,@RequestBody無法繼承的解決方案

    Spring Cloud中使用Feign,@RequestBody無法繼承的解決方案

    這篇文章主要介紹了Spring Cloud中使用Feign,@RequestBody無法繼承的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java字段初始化的規律解析

    Java字段初始化的規律解析

    這篇文章主要介紹了Java字段初始化的規律解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • java中全排列的生成算法匯總

    java中全排列的生成算法匯總

    本文給大家匯總介紹了常見的6種全排列的生成算法,包括字典序法、遞增進位數制法、遞減進位數制法、鄰位交換法、遞歸類算法、元素增值法,有需要的小伙伴可以參考下
    2015-07-07
  • JAVA StringBuffer類與StringTokenizer類代碼解析

    JAVA StringBuffer類與StringTokenizer類代碼解析

    這篇文章主要介紹了JAVA StringBuffer類與StringTokenizer類代碼解析,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Jmeter3.0發布!版本更新到底更新了什么

    Jmeter3.0發布!版本更新到底更新了什么

    Jmeter3.0發布!版本更新到底更新了什么?這篇文章主要告訴大家Jmeter3.0版本更新了什么,感興趣的小伙伴們可以參考一下
    2016-08-08

最新評論

美丽人妻被按摩中出中文字幕