mybaits中使用存储过程

如何使用Mybaits调用数据库中的存储过程,下面以Oracle数据库的为例:

1.在数据库中创建以下的存储过程:

create or replace procedure pro_hello(p_result out varchar2) is

begin

select * from 表名 where 条件=p_result

end;

2.编写SQL映射文件mapper.xml:

<select id="proHello" statementType="CALLABLE">

<![CDATA[

{call pro_hello (#{传进来的参数,mode=IN(传入参数),jdbcType=VARCHAR(参数类型)})}

]]>

</select>

3.编写JAVA代码调用存储过程

public class ProcedureTest {

public static void main(String[] args) throws IOException {

String resource = "mybatis.cfg.xml";

Reader reader = Resources.getResourceAsReader(resource);

SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);

SqlSession session = ssf.openSession();

try {

Map<String, String> param = new HashMap<String, String>();

param.put("p_user_name", "zhangsan");

String returnValue = (String) session.selectOne("User.proHello", param);

System.out.println("message=" + param.get("p_user_name"));

System.out.println("result=" + param.get("result"));

System.out.println("returnValue=" + returnValue);

} catch (Exception e) {

e.printStackTrace();

} finally {

session.close();

}

}

}

如果传入的参数是多个的话,


<parameterMap type="drvPhotoListInfo" id="drvPhotoListParam">
<parameter property="sfzmmc" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
  <parameter property="sfzmhm" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
  <parameter property="dabh" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
  <parameter property="daglbm" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
  <parameter property="ywglbm" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
  <parameter property="jbr" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
  <parameter property="bodys" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
  <parameter property="returnCode" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT" />
  <parameter property="returnResult" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT" />
 </parameterMap>//调用存储过程的方法
<select id="saveDrvPhotoListInfo" statementType="CALLABLE" parameterMap="drvPhotoListParam">
  {call BUSINESS.HIS_DRVDA_IN (?,?,?,?,?,?,?,?,?)}
 </select>
我的存储过程是放在包下边的 如果你没有放在包下 就这样写{call HIS_DRVDA_IN (?,?,?,?,?,?,?,?,?)}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值