环境
mybatis :1.3.4-mybatis-spring-boot-starter
postgresql: 12.16
jdk:8+
mapper.java
@Mapper
public interface CustomMapper {
@Options(statementType = StatementType.CALLABLE)
@Select("CALL pg_schema.sync_area_code(#{out_result, mode=IN, jdbcType=VARCHAR})")
String syncAreaCode(@Param("out_result") String outResult);
}
此处@Param参数要和#{out_result, 一致
测试方法
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = DemoApplication.class)
public class TestCode {
@Autowired
private CustomMapper customMapper;
@Test
public void testMybatis() {
String outResult = "成功2333!";
customMapper.syncAreaCode(outResult);
System.out.println(outResult);
}
}
存储过程
-- DROP PROCEDURE sync_area_code(inout varchar);
CREATE OR REPLACE PROCEDURE sync_area_code(INOUT out_result character varying)
LANGUAGE plpgsql
AS $procedure$
begin
-- 业务逻辑
out_result := '成功!';
exception
when others then
rollback;
end;
$procedure$
;