存儲過程還不會寫的同學可以參考我另一篇文章: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) }