zoukankan      html  css  js  c++  java
  • ibatis.net调用oracle存储过返回游标SYS_REFCURSOR结果集

        最近在用ibatis.net框架和oracle 11g开发一套程序。其中有一个需求就是通过存储过程,查询指定条件的数据集。

        但是在开发的过程中遇到了问题,问题如下:

        1.如何通过ibatis.net执行存储过程?

        2.通过ibatis.net执行存储过程时,如何传参数?

        3.通过ibatis.net执行存储过程时,传递参数过程中,dbType和type是如何对应的?

        4.oracle存储过程中返回的游标集合SYS_REFCURSOR对应dbType是什么?

        5.通过ibatis.net执行存储过程后,得到的SYS_REFCURSOR游标数据集合如何序列化,存储到IList<T>集合中?

        下面概述一下我程序的代码结构,主要分为如下几层:

        1.ENT实体层,数据库表、视图、数据集与实体类对应

        2.PRL持久层,数据持久化,入库,出库等

        3.SER服务层,封装持久层

        4.WEB前端,Map文件,dao文件,等config文件以及前端。

        下面针对上述的问题,做解答:

        1.SER层中封装对调用存储过程调用方法,执行到最后,调用ibatis.net中的 QueryForList<T>(statementName, parameterObject)方法来。(如下图方法)

    (图一)

        2.ibatis.net框架中传递参数要分为两块,1块为xml文件配制处传递参数,另一块为构造图一中的parameterObjec。

        第一块:StoredProcedure.xml配置文件,构造配置参数。

    (图二)

        第二块:构造parameterObjec参数的Hashtable。

    (图三)

        3.关于dbType和type关系,dbType只的是oracle数据中的数据类型,type只的是数据库中的数据转换为.net对应的数据类型。(从图二可以看出来)

        4.在ibatis.net中,默认使用的是ODP.NET对调用oracle数据库做的封装,起对应的dbType为RefCursor,而不是直接把SYS_REFCURSOR这个类型填写过来,要去掉前面的SYS_。

        5.现在参数处理完毕,数据集合也可以得到了,如何将得到的SYS_REFCURSOR游标数据集合序列化到对应的实体集合中呢?这个时候还是通过StoredProcedure.xml配置文件中的配置实现的。

    (图四)

        最后就是StoredProcedure.xml文件中如何配置调用存储过程了。如下如:

    (图五)

        需要注意的几个参数:

        1.id="ProEventType2Tj",这个是构造唯一sql语句的参数,不能重复。

        2.parameterMap="ProEventTypePara",指的是问题2中,配置文件配置的参数。

        3.resultMap="ProVEventType2TjResult",将通过oracle游标SYS_REFCURSOR得到数据集,与resultMap中指定的class做对比,将游标中每条咧与映射的实体类的属性比较赋值,完成序列化,将数据填充到IList<>集合中。

     

     

    学什么,就写什么!遇到什么问题,解决问题了,就记录一下解决的过程!
  • 相关阅读:
    形象理解ERP(转)
    禁用windows server 2008 域密码复杂性要求策略
    How to adding find,filter,remove filter on display method Form
    Windows Server 2008 R2激活工具
    How to using bat command running VS development SSRS report
    Creating Your First Mac AppGetting Started
    Creating Your First Mac AppAdding a Track Object 添加一个 Track 对象
    Creating Your First Mac AppImplementing Action Methods 实现动作方法
    Creating Your First Mac AppReviewing the Code 审查代码
    Creating Your First Mac AppConfiguring the window 设置窗口
  • 原文地址:https://www.cnblogs.com/eshinex/p/4227352.html
Copyright © 2011-2022 走看看