MyBatis注解调用存储过程获取返回值

1.准备存储过程

create or replace procedure P_Test(vc_num1 in varchar2,
                                   vc_num2 in varchar2,
                                   vc_sql out varchar2) is

begin
  //具体操作
end P_Test;
View Code

2.在dao文件配置

@Select("{call P_Test(#{map.num1,jdbcType=VARCHAR,mode=IN},"
            + "#{map.num2,jdbcType=VARCHAR,mode=IN},"
            + "#{map.sql,jdbcType=VARCHAR,mode=OUT})}")
    @Result(column = "sql", property = "sql", jdbcType = JdbcType.VARCHAR)
    @Options(statementType = StatementType.CALLABLE)
    void getSqlBycondition(@Param("map") Map<String, Object> map);
View Code

statementType = StatementType.CALLABLE 表示存储过程

3.在service中调用

String sql = "";
        Map<String, Object> mapSql = new HashMap<>();
        mapSql.put("num1", "1");
        mapSql.put("num2", "2");
        mapSql.put("sql", sql);
        middleService.getSqlBycondition(mapSql);
View Code

在通过map.get("sql")获取返回值

posted on 2021-08-11 10:01  lovezj9012  阅读(441)  评论(0编辑  收藏  举报

导航