ludc
2025-01-16 986aa62ed00bee39363bab41b4eeb8259d446efd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
/**
 * <p>Title:</p>
 * <p>Description:</p>
 * <p>Copyright: Copyright (C) 2011 </p>
 * <p>Company: VCI </p>
 * @author Bear
 * @time 2011-8-22
 * @version 1.0
 */
package com.vci.server.base.persistence.dao;
 
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedHashMap;
 
public abstract class JDBCCallback {
    private java.sql.Connection cn = null;
    private String sql = "";
    private Object[] params = null;
    private JDBCRunType runType = JDBCRunType.Function;
    private int returnSqlType = 1; 
    private boolean isHasRefCursorOut = false;
    private boolean closeConnectionInFinally = false;
    
    /**
     * 输出参数类型Maps(key:索引,value:输出参数类型<see>java.sql.Types</see>)
     */
    private LinkedHashMap<Integer, Integer> outParamTypeMaps = new LinkedHashMap<Integer, Integer>();
    /**
     * 输出参数数据Maps(key:索引,value:输出参数数据值(Object))
     */
    private LinkedHashMap<Integer, Object> outParamValueMaps = new LinkedHashMap<Integer, Object>(); 
 
    /**
     * 构建 callback 对象
     * @param cn 连接
     * @param sql sql 
     * @param runType 执行对象的类型 fun or proc or sql @see<p>com.vci.base.server.persistence.dao.JDBCRunType</p>
     * @param returnSqlType 返回值类型(仅适应于fun)
     * @param hasRefCursorOut 是否包含引用标参数(仅适应于proc)
     * @param closeConnectionInFinally 
     * <p>根据参数选项,决定要不要关闭连接对象</p>
     * <p>1.如果此连接来自于与Session连接池中的Connection,不需要关闭此连接,此时值应该传 <b>false</b></p>
     * <p>2.如果此连接来自与DB创建的新连接(无连接池或不是从连接池中取出的连接),则需要即时关闭,此时值应该传 <b>true</b></p>
     * <p>3.对于在启用了Hibernate的应用中,不需要即时关闭连接,此时值应该传 <b>false</b></p>
     * @param params 参数值
     */
    public JDBCCallback(Connection cn, String sql,
            JDBCRunType runType, int returnSqlType, boolean isHasRefCursorOut,
            boolean closeConnectionInFinally, Object[] params) {
        super();
        this.cn = cn;
        this.sql = sql;
        this.params = params;
        this.runType = runType;
        this.returnSqlType = returnSqlType;
        this.isHasRefCursorOut = isHasRefCursorOut;
        this.closeConnectionInFinally = closeConnectionInFinally;
    }
    /**
     * 构建 callback 对象
     * @param cn 连接
     * @param sql sql 
     * @param runType 执行对象的类型 fun or proc or sql @see<p>com.vci.base.server.persistence.dao.JDBCRunType</p>
     * @param returnSqlType 返回值类型(仅适应于fun)
     * @param hasRefCursorOut 是否包含引用标参数(仅适应于proc)
     * @param closeConnectionInFinally 
     * <p>根据参数选项,决定要不要关闭连接对象</p>
     * <p>1.如果此连接来自于与Session连接池中的Connection,不需要关闭此连接,此时值应该传 <b>false</b></p>
     * <p>2.如果此连接来自与DB创建的新连接(无连接池或不是从连接池中取出的连接),则需要即时关闭,此时值应该传 <b>true</b></p>
     * <p>3.对于在启用了Hibernate的应用中,不需要即时关闭连接,此时值应该传 <b>false</b></p>
     * @param outParamTypeMaps 输出参数类型Maps(key:索引,value:输出参数类型<see>java.sql.Types</see>)
     * @param outParamValueMaps    输出参数数据Maps(key:索引,value:输出参数数据值(Object))
     * @param params 参数值
     */
    public JDBCCallback(Connection cn, String sql, 
            JDBCRunType runType, int returnSqlType, boolean isHasRefCursorOut,
            boolean closeConnectionInFinally, Object[] params,
            LinkedHashMap<Integer, Integer> outParamTypeMaps) {
        this(cn, sql, runType, returnSqlType, isHasRefCursorOut, closeConnectionInFinally, params);
        this.outParamTypeMaps = outParamTypeMaps;
    }
 
    public java.sql.Connection getCn() {
        return cn;
    }
    public void setCn(java.sql.Connection cn) {
        this.cn = cn;
    }
 
    public String getSql() {
        return sql;
    }
 
    public void setSql(String sql) {
        this.sql = sql;
    }
 
    public Object[] getParams() {
        return params;
    }
 
    public void setParams(Object[] params) {
        this.params = params;
    }
 
    public int getReturnSqlType() {
        return returnSqlType;
    }
 
    public void setReturnSqlType(int returnSqlType) {
        this.returnSqlType = returnSqlType;
    }
 
    public boolean isHasRefCursorOut() {
        return isHasRefCursorOut;
    }
 
    public void setHasRefCursorOut(boolean isHasRefCursorOut) {
        this.isHasRefCursorOut = isHasRefCursorOut;
    }
 
    public JDBCRunType getRunType() {
        return runType;
    }
 
    public void setRunType(JDBCRunType runType) {
        this.runType = runType;
    }
 
    public boolean isCloseConnectionInFinally() {
        return closeConnectionInFinally;
    }
    public void setCloseConnectionInFinally(boolean closeConnectionInFinally) {
        this.closeConnectionInFinally = closeConnectionInFinally;
    }
    /**
     * 返回输出参数类型Maps(key:索引,value:输出参数类型<see>java.sql.Types</see>)
     * @return
     */
    public LinkedHashMap<Integer, Integer> getOutParamTypeMaps() {
        return outParamTypeMaps;
    }
    /**
     * 设置输出参数类型Maps(key:索引,value:输出参数类型<see>java.sql.Types</see>)
     * @param outParamTypeMaps
     */
    public void setOutParamTypeMaps(LinkedHashMap<Integer, Integer> outParamTypeMaps) {
        this.outParamTypeMaps = outParamTypeMaps;
    }
    /**
     * 返回 输出参数数据Maps(key:索引,value:输出参数数据值(Object))
     * @return
     */
    public LinkedHashMap<Integer, Object> getOutParamValueMaps() {
        return outParamValueMaps;
    }
    /**
     * 设置 输出参数数据Maps(key:索引,value:输出参数数据值(Object))
     * @param outParamValueMaps
     */
    public void setOutParamValueMaps(LinkedHashMap<Integer, Object> outParamValueMaps) {
        this.outParamValueMaps = outParamValueMaps;
    }
    /**
     * 执行回调 
     * @param rst ResultSet 对象
     * @return
     * @throws SQLException
     */
    abstract public Object execute(ResultSet rst) throws SQLException;
}