1.在mapper.xml中调用
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xxx.mapper.XxxMapper"> <select id="expenseSum" parameterType="java.util.Map" statementType="CALLABLE" > CALL packages.method( #{parameter1, mode=IN, jdbcType=DECIMAL}, #{parameter2, mode=IN, jdbcType=VARCHAR}, #{parameter3, mode=OUT, jdbcType=DECIMAL}, #{parameter4, mode=OUT, jdbcType=VARCHAR} ) </select> </mapper>
2.在mapper.java中调用
void expenseSum(Map<String, Object> map);
3.在ServiceImpl.java中调用
Map<String, Object> m = new HashedMap<String, Object>(); String year = req.getParameter("YEAR"); m.put("parameter1", new BigDecimal(year)); m.put("parameter2",userCode); iExpenseSummaryMapper.expenseSum(m); if("0".equals(m.get("parameter3").toString())) { map.put("code", "0"); map.put("success", true); map.put("msg", m.get("parameter4")); }else { map.put("code", "500"); map.put("success", false); map.put("msg", m.get("parameter4")); }
4.Oracle中的存储过程头部
PROCEDURE method ( parameter1 NUMBER, parameter2 VARCHAR2, parameter3 OUT NUMBER, parameter4 OUT VARCHAR2)
5.总结
mapper.xml中的
packages 为Oracle数据库中Packages目录下对应的包名,method为调用存储过程的方法名 parameter1 - 4 分别对应调用的存储过程方法的参数名 mode=IN 为输入参数 mode=OUT 为输出参数(返回参数) jdbcType 为该参数对应的数据类型