zoukankan      html  css  js  c++  java
  • 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 (?,?,?,?

    ,?,?

    ,?

    ,?,?)}



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

  • 相关阅读:
    Iframe和Frame中实现cookie跨域的方法(转载)
    android中拷贝assets下的资源文件到SD卡中(可以超过1M)
    OpenSL ES 查询设备支持的SL Profiles
    NDK开发中的一个HTTP下载实例附带下载进度
    android中配置文件property的用途以及使用<转>
    Eclipse 工程使用相对路径导入Jar包设置
    Android 解压zip文件(支持中文)
    c++实现一个比较两个string类型的版本号的小demo
    linux c++下载http文件并显示进度<转>
    Linux下类似windows下_beginthread和_endthread 的多线程开发
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4619235.html
Copyright © 2011-2022 走看看