查询操作、存储过程、函数调用中使用行处理器-bboss persistent框架行处理器使用

本文介绍如何在bboss框架中使用行处理器处理查询结果集,包括如何将查询结果映射到自定义对象中,并提供了具体的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查询、存储过程、函数调用中使用行处理器-bboss persistent框架行处理器使用
bboss persistent框架提供能了行处理器的功能,通过行处理器,用户可以自行处理查询结果集、存储过程out参数、存储函数out参数。本文分别举例说明。

  • 在查询中使用行处理器
    假设通过PreparedDBUtil执行以下预编译查询:select * from testnewface where object_id < ? --查询testnewface中object_id小于设定参数的所有记录
    结果集将被封装成TestNewface对象列表返回。
    表testnewface的结构如下:

 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------

 OWNER                                     NOT NULL VARCHAR2(30)
 OBJECT_NAME                               NOT NULL VARCHAR2(30)
 SUBOBJECT_NAME                                     VARCHAR2(30)
 OBJECT_ID                                 NOT NULL NUMBER
 DATA_OBJECT_ID                                     NUMBER
 OBJECT_TYPE                                        VARCHAR2(19)
 CREATED                                   NOT NULL DATE
 LAST_DDL_TIME                             NOT NULL DATE
 TIMESTAMP                                          VARCHAR2(19)
 STATUS                                             VARCHAR2(7)
 TEMPORARY                                          VARCHAR2(1)
 GENERATED                                          VARCHAR2(1)
 SECONDARY                                          VARCHAR2(1)

 

TestNewface对象结构如下,每个属性和表testnewface列名相对应:

public class TestNewface {
        String OWNER          ;
        String  OBJECT_NAME    ;
        String   SUBOBJECT_NAME   ;
        int   OBJECT_ID     ;
        int  DATA_OBJECT_ID  ;
        String   OBJECT_TYPE     ;
        Date  CREATED          ;
        Date LAST_DDL_TIME    ;
        String  TIMESTAMP        ;
        String  STATUS         ;
        String  TEMPORARY      ;
        String   GENERATED     ;
        String   SECONDARY    ;
        public String getOWNER() {
                return OWNER;
        }
        public void setOWNER(String owner) {
                OWNER = owner;
        }
        public String getOBJECT_NAME() {
                return OBJECT_NAME;
        }
        public void setOBJECT_NAME(String object_name) {
                OBJECT_NAME = object_name;
        }
        public String getSUBOBJECT_NAME() {
                return SUBOBJECT_NAME;
        }
        public void setSUBOBJECT_NAME(String subobject_name) {
                SUBOBJECT_NAME = subobject_name;
        }
        public int getOBJECT_ID() {
                return OBJECT_ID;
        }
        public void setOBJECT_ID(int object_id) {
                OBJECT_ID = object_id;
        }
        public int getDATA_OBJECT_ID() {
                return DATA_OBJECT_ID;
        }
        public void setDATA_OBJECT_ID(int data_object_id) {
                DATA_OBJECT_ID = data_object_id;
        }
        public String getOBJECT_TYPE() {
                return OBJECT_TYPE;
        }
        public void setOBJECT_TYPE(String object_type) {
                OBJECT_TYPE = object_type;
        }
        public Date getCREATED() {
                return CREATED;
        }
        public void setCREATED(Date created) {
                CREATED = created;
        }
        public Date getLAST_DDL_TIME() {
                return LAST_DDL_TIME;
        }
        public void setLAST_DDL_TIME(Date last_ddl_time) {
                LAST_DDL_TIME = last_ddl_time;
        }
        public String getTIMESTAMP() {
                return TIMESTAMP;
        }
        public void setTIMESTAMP(String timestamp) {
                TIMESTAMP = timestamp;
        }
        public String getSTATUS() {
                return STATUS;
        }
        public void setSTATUS(String status) {
                STATUS = status;
        }
        public String getTEMPORARY() {
                return TEMPORARY;
        }
        public void setTEMPORARY(String temporary) {
                TEMPORARY = temporary;
        }
        public String getGENERATED() {
                return GENERATED;
        }
        public void setGENERATED(String generated) {
                GENERATED = generated;
        }
        public String getSECONDARY() {
                return SECONDARY;
        }
        public void setSECONDARY(String secondary) {
                SECONDARY = secondary;
        }
       
        public String toString()
        {
                StringBuffer ret = new StringBuffer();
                ret.append("[OWNER=").append(OWNER).append("]")
                .append("[OBJECT_NAME=").append(OBJECT_NAME).append("]")
                .append("[SUBOBJECT_NAME=").append(SUBOBJECT_NAME).append("]")
                .append("[OBJECT_ID=").append(OBJECT_ID).append("]")
                .append("[DATA_OBJECT_ID=").append(DATA_OBJECT_ID).append("]")
                .append("[OBJECT_TYPE=").append(OBJECT_TYPE).append("]")
                .append("[CREATED=").append(CREATED).append("]")
                .append("[LAST_DDL_TIME=").append(LAST_DDL_TIME).append("]")
                .append("[TIMESTAMP=").append(TIMESTAMP).append("]")
                .append("[STATUS=").append(STATUS).append("]")
                .append("[TEMPORARY=").append(TEMPORARY).append("]")
                .append("[GENERATED=").append(GENERATED).append("]")
                .append("[SECONDARY=").append(SECONDARY).append("]");
                return ret.toString();
        }
}

首先看一下不使用行处理器的查询方法:

import com.frameworkset.common.poolman.PreparedDBUtil;
import com.frameworkset.common.poolman.handle.RowHandler;
。。。。
                PreparedDBUtil dbUtil = new PreparedDBUtil();
                try {
                        dbUtil.preparedSelect("select owner from testnewface where object_id < ?");
                        dbUtil.setInt(1, 100);
                        List list = dbUtil.executePreparedForList(TestNewface.class);//已经将查询结果转化为TestNewface类型的对象列表
                        for(int i = 0; i < list.size(); i ++)
                        {
                                TestNewface testNewface = (TestNewface)list.get(i);
                                System.out.println(testNewface);
                        }
                } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

再看一下行处理器的使用方法,由应用程序来将记录Record中的列的值放入对象的属性中:

import com.frameworkset.common.poolman.PreparedDBUtil;
import com.frameworkset.common.poolman.Record;
import com.frameworkset.common.poolman.handle.RowHandler;
。。。。
                PreparedDBUtil dbUtil = new PreparedDBUtil();
                try {
                        dbUtil.preparedSelect("select * from testnewface where object_id < ?");
                        dbUtil.setInt(1, 100);
                        List list = dbUtil.executePreparedForList(TestNewface.class,new RowHandler()//定义行处理器
                        {

                                public void handleRow(Object rowValue, Record record) {//实现行处理器接口方法,rowValue参数就是要设置的空的对象实例,record就是包含了查询列表中当前记录的所有列和值信息。
                                        TestNewface t = (TestNewface)rowValue;//转化为TestNewface对象,记住这时的属性值都是初始值
                                        try {
                                                t.setCREATED(record.getDate("created"));
                                                t.setDATA_OBJECT_ID(record.getInt("DATA_OBJECT_ID"));
                                                //........设置其他的属性,同时也可以处理与当前记录相关的功能

                                             
                                        } catch (SQLException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }
                                        System.out.println("row handler:"+t);
                                       
                                }
                               
                        });
                        for(int i = 0; i < list.size(); i ++)
                        {
                                TestNewface testNewface = (TestNewface)list.get(i);
                                System.out.println(testNewface);
                        }
                } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

存储过程、函数调用中使用行处理器看后两篇文章

 

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值