mybatis調用存儲過程(@Select方式)


存儲過程還不會寫的同學可以參考我另一篇文章:https://www.cnblogs.com/liuboyuan/p/9375882.html

網上已經有很多用mybatis調用的教程了,但是大部分是xml方式調用,最近項目中用mybatis plus,沒有xml配置文件。本次分享下用@Select注解方式調用。

 

創建存儲過程(語法oracle)

create or replace procedure test(name in  varchar,gender out varchar)
  as
  begin
    if name = 'xiaoming' then gender := 'man';
      else gender := 'woman';
    end if;
  end;

 測試一下

declare
  name varchar(16);
  gender varchar(16);
begin
  name:='xiaoming';
  test(name,gender);
  dbms_output.put_line(gender); --控制台打印man
end;

 

如果mybatis使用的連接數據庫用戶權限比較低,還需要授權才能執行

grant execute on 庫名.存儲過程名稱 to 用戶; --別忘了給用戶授權

 

准備測試pojo

import lombok.*;

@Data
@NoArgsConstructor
@ToString
public class People {
    private String name;
    private String gender;
}

 

mapper的寫法

import org.apache.ibatis.annotations.*;
import org.apache.ibatis.mapping.StatementType;

@Mapper
public interface TestMapper  {
    @Select("{call 庫名.test(#{name,jdbcType=VARCHAR,mode=IN},#{gender,jdbcType=VARCHAR,mode=OUT})}")
    @Options(statementType = StatementType.CALLABLE)
    void getGengder(People people);
}

 

測試類

    @Resource
    private TestMapper testMapper;

    @Test
    public void test() {
        People people = new People();
        people.setName("xiaoming");
        testMapper.getGengder(people);
        System.out.println(people); //(name=xiaoming,gender=man)
    }

 


免責聲明!

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



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