热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

存储过程返回结果转化为对象属性值的方法-bbosspersistento/rmapping机制应用

bbosspersistentormapping机制能够将存储过程调用过程中out参数转化为对象属性返回给应用程序。本文档举例说明这个功能。java值对象Test_p,定义好属性及属

bboss persistent o/r mapping机制能够将存储过程调用过程中out参数转化为对象属性返回给应用程序。本文档举例说明这个功能。

java值对象Test_p,定义好属性及属性的set/get方法
public class Test_p {
        private String test;
        private String name;
        private String name1;
        private int count = 0;
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public String getName1() {
                return name1;
        }
        public void setName1(String name1) {
                this.name1 = name1;
        }
        public String toString()
        {
                return new StringBuffer().append("name=").append(name).append(",name1=").append(name1).append(",test=").append(test).toString();
        }
        public String getTest() {
                return test;
        }
        public void setTest(String test) {
                this.test = test;
        }
        public int getCount() {
                return count;
        }
        public void setCount(int count) {
                this.count = count;
        }

}

定义存储过程,存储过程中的out参数名称与java对象Test_p的属性保持一致,bboss persistent 提供的or mapping机制将自动在procedure的out参数名称和java对象的属性之间进行撮合,匹配上的属性和参数将会进行值与值的设置,如果二者之间的数据类型不一致,那么只要能够转换 框架将会进行自动转换。

CREATE OR REPLACE PROCEDURE test_p(id in number,
                                   name out varchar2 --本参数与Test_p对象中的name属性对应,并且类型一致,不需要类型转换
                                ,name1 out varchar2,--本参数在Test_p对象中的name1属性对应,并且类型一致,不需要类型转换                                  
                                   test out number,--本参数在Test_p对象中的test属性对应,但是类型不一致,一个是number,一个是String,需要类型转换,即number将被转换为String类型
                                   notmatch out number --本参数在Test_p对象中没有对应属性,将被忽略
) IS

/******************************************************************************
   NAME:       test
   PURPOSE:   

   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.0        2008-10-27          1. Created this procedure.

   NOTES:

   Automatically available Auto Replace Keywords:
      Object Name:     test
      Sysdate:         2008-10-27
      Date and Time:   2008-10-27, 17:05:33, and 2008-10-27 17:05:33
      Username:         (set in TOAD Options, Procedure Editor)
      Table Name:       (set in the "New PL/SQL Object" dialog)

******************************************************************************/
BEGIN
   --tmpVar := 0;
   name := 'hello name';
   name1 := 'hello name1';
   test := id;
   notmatch := id;
   --insert into test(id,name) values(SEQ_TEST.nextval,'name1');
   --commit;
  
  
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL;
  WHEN OTHERS THEN
    -- Consider logging the error and then re-raise
    RAISE;
END test_p;
/

业务方法

CallableDBUtil callableDBUtil = new CallableDBUtil();
                try
                {
                        callableDBUtil.prepareCallable("{call test_p(?,?,?,?,?)}");
                        //不允许的操作: Ordinal binding and Named binding cannot be combined!
                        callableDBUtil.setInt("id", 10);
                        callableDBUtil.registerOutParameter("name", java.sql.Types.VARCHAR);
                        callableDBUtil.registerOutParameter("name1", java.sql.Types.VARCHAR);
                        callableDBUtil.registerOutParameter("test", java.sql.Types.INTEGER);
                        callableDBUtil.registerOutParameter("nomatch", java.sql.Types.INTEGER);
                        Test_p tets = (Test_p)callableDBUtil.executeCallableForObject(Test_p.class);
                       
                        System.out.println("Test_p is " + tets);
                                       
                }
                catch(Exception e)
                {
                        e.printStackTrace();
                } 

 

bboss项目下载列表 在sourceforge访问地址为:
https://sourceforge.net/project/showfiles.php?group_id=238653

     


推荐阅读
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • 在开发过程中,有时需要提供用户创建数据库的功能。本文介绍了如何利用 .NET 和 ADOX 在应用程序中实现创建 Access 数据库,并详细说明了创建数据库及表的具体步骤。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文详细探讨了在Java中如何将图像对象转换为文件和字节数组(Byte[])的技术。虽然网络上存在大量相关资料,但实际操作时仍需注意细节。本文通过使用JMSL 4.0库中的图表对象作为示例,提供了一种实用的方法。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文详细介绍了在Windows系统中如何配置Nginx以实现高效的缓存加速功能,包括关键的配置文件设置和示例代码。 ... [详细]
  • 如何将955万数据表的17秒SQL查询优化至300毫秒
    本文详细介绍了通过优化SQL查询策略,成功将一张包含955万条记录的财务流水表的查询时间从17秒缩短至300毫秒的方法。文章不仅提供了具体的SQL优化技巧,还深入探讨了背后的数据库原理。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
  • MySQL Administrator: 监控与管理工具
    本文介绍了 MySQL Administrator 的主要功能,包括图形化监控 MySQL 服务器的实时状态、连接健康度、内存健康度以及如何创建自定义的健康图表。此外,还详细解释了状态变量和系统变量的管理。 ... [详细]
  • 在现代Web开发中,HTML5 Canvas常用于图像处理和绘图任务。本文将详细介绍如何将Canvas中的图像导出并上传至服务器,适用于拼图、图片编辑等场景。 ... [详细]
author-avatar
大海2502902497
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有