我们来用MyBatis调用存储过程:
创建存储过程
create or replace procedure queryCountByAge (agew in number,ncount out number)
as begin
select count(1) into ncount from person where age=agew;
end;
创建存储过程标签
<select id="queryPersonByProcedure" statementType="CALLABLE" parameterType="HashMap">
{
CALL queryCountByAge(
#{age,jdbcType=INTEGER,mode=IN},
#{ncount,jdbcType=INTEGER,mode=OUT}
)
}
</select>
调用存储过程
public class TestMyBatis {
public static void main(String[] args) throws IOException {
// 加载配置文件
Reader reader = Resources.getResourceAsReader("conf.xml");
SqlSessionFactory sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder().build(reader);
// session == conn
SqlSession session = sqlSessionFactoryBuilder.openSession();
PersonMapper mapper = session.getMapper(PersonMapper.class);
Map<String, Object> params = new HashMap<>();
params.put("age", 15);
mapper.queryPersonByProcedure(params);
Object a = params.get("ncount");
System.out.println(a);
session.commit();
session.close();
}
}