Mybatis 使用@select注解調用帶輸出參數的存儲過程


 @Options(statementType = StatementType.CALLABLE)
 @Select("{Call procdure_name(" +
         "#{map.name,mode=OUT,jdbcType=INTEGER}," +
         "#{map.password,mode=OUT,jdbcType=INTEGER}," +
         "#{map.total,mode=OUT,jdbcType=INTEGER})}")
void   getXXXXX(Map<String,Object> map);

 

//調用

Map<String, Object> map=new HashMap<>();
XXXXMapper.getXXXXX(map);
Map<String, Integer> totalMap = (Map<String, Integer>) map.get("map");//map獲取
Integer total = totalMap.get("total");//key值與傳參時一致
Integer name= totalMap.get("name");
Integer password= totalMap.get("password");

 

 

注意點:

 

1、@options:statementType.CallAble 必須聲明,告訴程序這是要執行存儲過程,否則會報,main找不到

 

2、有兩種方式帶參:$”#”

 

主要區別就是#帶雙引號,$不帶

 

例如:#{id}代表'id'${id}代表id

 

第二種因為傳一個參數是可以省略@Param("")的,但是這種情況下不能使用${},

 

傳兩個參數以上時,必須要寫@Param("")

 

3、 存儲過程的output參數,只能通過傳入的map獲取參數,使用map.XXX ;

 

輸出參數 設置mode=OUT ,jdbcTypeSQL中存儲過程類型一致。

 

4、存儲過程對應的數據類型為枚舉類型,需要使用大寫,如VARCHAR

 

5、存儲過程返回的結果集可直接用返回的map接收

 

 

 

 

 

參考文獻:

 

mybatis調用mysql存儲過程(返回參數,單結果集,多結果集)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM