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 (?,?,?,?

,?,?

,?

,?,?)}



版权声明:本文博客原创文章,博客,未经同意,不得转载。

原文地址:https://www.cnblogs.com/yxwkf/p/4619235.html