(java oracle)以bean和array为参数的存储过程及dao部分代码

一、数据库部分

1.创建bean对象

 1 CREATE OR REPLACE TYPE "QUARTZJOBBEAN" as object

 2 (

 3 -- Author  : Duwc

 4 -- Purpose : for QuartzJobBean

 5   job_name          varchar2(200),

 6   job_group         varchar2(200),

 7   job_class_name    varchar2(250),

 8   trigger_name      varchar2(200),

 9   trigger_group     varchar2(200),

10   trigger_state     varchar2(16),

11   trigger_type      varchar2(8),

12   t1                varchar2(200),

13   t2                varchar2(200),

14   t3                varchar2(200),

15   is_durable        varchar2(1),

16   is_volatile       varchar2(1),

17   is_stateful       varchar2(1),

18   requests_recovery varchar2(1),

19   priority          number(13),

20   start_time        number(13),

21   end_time          number(13),

22   calendar_name     varchar2(200),

23   misfire_instr     number(2)

24 )

2.创建array对象

CREATE OR REPLACE TYPE "QUARTZJOBARRAY"  is table of QUARTZJOBBEAN

3.存储过程PACKAGE部分

1 CREATE OR REPLACE PACKAGE PKG_MODULES_DM_QUARTZ AS

2 

3   /*插入定时任务表*/

4   PROCEDURE INSERT_QUARTZJOB(v_bean QUARTZJOBBEAN);

5 

6   /*暂停定时任务表*/

7   PROCEDURE PAUSE_QUARTZJOB(v_array QUARTZJOBARRAY);

8 END;

4.存储过程BODY部分

 1 CREATE OR REPLACE PACKAGE BODY PKG_MODULES_DM_QUARTZ AS

 2   /*插入定时任务表*/

 3   PROCEDURE INSERT_QUARTZJOB(v_bean QUARTZJOBBEAN) IS

 4   BEGIN

 5     insert into QRTZ_JOB_DETAILS

 6       (JOB_NAME,

 7        JOB_GROUP,

 8        DESCRIPTION,

 9        JOB_CLASS_NAME,

10        IS_DURABLE,

11        IS_VOLATILE,

12        IS_STATEFUL,

13        REQUESTS_RECOVERY)

14     values

15       (v_bean.job_name,

16        v_bean.job_group,

17        v_bean.job_name,

18        v_bean.job_class_name,

19        v_bean.is_durable,

20        v_bean.is_volatile,

21        v_bean.is_stateful,

22        v_bean.requests_recovery);

23   

24     insert into QRTZ_TRIGGERS

25       (TRIGGER_NAME,

26        TRIGGER_GROUP,

27        JOB_NAME,

28        JOB_GROUP,

29        IS_VOLATILE,

30        PRIORITY,

31        TRIGGER_STATE,

32        TRIGGER_TYPE,

33        START_TIME,

34        END_TIME,

35        CALENDAR_NAME,

36        MISFIRE_INSTR)

37     values

38       (v_bean.trigger_name,

39        v_bean.trigger_group,

40        v_bean.job_name,

41        v_bean.job_group,

42        v_bean.is_volatile,

43        v_bean.priority,

44        v_bean.trigger_state,

45        v_bean.trigger_type,

46        v_bean.start_time,

47        v_bean.end_time,

48        v_bean.calendar_name,

49        v_bean.misfire_instr);

50   

51     if v_bean.trigger_type = 'CRON' then

52       insert into QRTZ_CRON_TRIGGERS

53         (TRIGGER_NAME, TRIGGER_GROUP, CRON_EXPRESSION, TIME_ZONE_ID)

54       values

55         (v_bean.trigger_name,

56          v_bean.trigger_group,

57          v_bean.t1,

58          'Asia/Shanghai');

59     elsif v_bean.trigger_type = 'SIMPLE' then

60       insert into QRTZ_SIMPLE_TRIGGERS

61         (TRIGGER_NAME,

62          TRIGGER_GROUP,

63          REPEAT_COUNT,

64          REPEAT_INTERVAL,

65          TIMES_TRIGGERED)

66       values

67         (v_bean.trigger_name,

68          v_bean.trigger_group,

69          to_number(v_bean.t2),

70          to_number(v_bean.t3),

71          0);

72     end if;

73     commit;

74   END;

75 

76   /*暂停定时任务表*/

77   PROCEDURE PAUSE_QUARTZJOB(v_array QUARTZJOBARRAY) IS

78     v_bean QUARTZJOBBEAN;

79   BEGIN

80     for i in v_array.first .. v_array.last loop

81       v_bean := v_array(i);

82       update QRTZ_TRIGGERS

83          set TRIGGER_STATE = 'PAUSED'

84        where trigger_name = v_bean.trigger_name

85          and trigger_group = v_bean.trigger_group;

86       commit;

87     end loop;

88   END;

89   

90 END;

二、dao部分

1.创建bean对象

  1 package com.ecnt.gnop.modules.dm.quartz.bean;

  2 

  3 public class QuartzJobBean {

  4 

  5     private String job_name;

  6     

  7     private String job_group;

  8     

  9     private String job_class_name;

 10     

 11     private String trigger_name;

 12     

 13     private String trigger_group;

 14     

 15     private String trigger_state;

 16     

 17     private String trigger_type;

 18     

 19     private String t1;

 20     

 21     private String t2;

 22     

 23     private String t3;

 24     

 25     private String is_durable;

 26     

 27     private String is_volatile;

 28     

 29     private String is_stateful;

 30     

 31     private String requests_recovery;

 32     

 33     private int priority;

 34     

 35     private int start_time;

 36     

 37     private int end_time;

 38     

 39     private String calendar_name;

 40     

 41     private String misfire_instr;

 42     

 43     public Object[] toArray() {

 44         Object[] obj = new Object[19];

 45         obj[0] = job_name;

 46         obj[1] = job_group;

 47         obj[2] = job_class_name;

 48         obj[3] = trigger_name;

 49         obj[4] = trigger_group;

 50         obj[5] = trigger_state;

 51         obj[6] = trigger_type;

 52         obj[7] = t1;

 53         obj[8] = t2;

 54         obj[9] = t3;

 55         obj[10] = is_durable;

 56         obj[11] = is_volatile;

 57         obj[12] = is_stateful;

 58         obj[13] = requests_recovery;

 59         obj[14] = priority;

 60         obj[15] = start_time;

 61         obj[16] = end_time;

 62         obj[17] = calendar_name;

 63         obj[18] = misfire_instr;

 64         return obj;

 65     }

 66     

 67     public String getCalendar_name() {

 68         return calendar_name;

 69     }

 70 

 71     public void setCalendar_name(String calendar_name) {

 72         this.calendar_name = calendar_name;

 73     }

 74 

 75     public int getEnd_time() {

 76         return end_time;

 77     }

 78 

 79     public void setEnd_time(int end_time) {

 80         this.end_time = end_time;

 81     }

 82 

 83     public String getIs_durable() {

 84         return is_durable;

 85     }

 86 

 87     public void setIs_durable(String is_durable) {

 88         this.is_durable = is_durable;

 89     }

 90 

 91     public String getIs_stateful() {

 92         return is_stateful;

 93     }

 94 

 95     public void setIs_stateful(String is_stateful) {

 96         this.is_stateful = is_stateful;

 97     }

 98 

 99     public String getIs_volatile() {

100         return is_volatile;

101     }

102 

103     public void setIs_volatile(String is_volatile) {

104         this.is_volatile = is_volatile;

105     }

106 

107     public String getMisfire_instr() {

108         return misfire_instr;

109     }

110 

111     public void setMisfire_instr(String misfire_instr) {

112         this.misfire_instr = misfire_instr;

113     }

114 

115     public int getPriority() {

116         return priority;

117     }

118 

119     public void setPriority(int priority) {

120         this.priority = priority;

121     }

122 

123     public String getRequests_recovery() {

124         return requests_recovery;

125     }

126 

127     public void setRequests_recovery(String requests_recovery) {

128         this.requests_recovery = requests_recovery;

129     }

130 

131     public int getStart_time() {

132         return start_time;

133     }

134 

135     public void setStart_time(int start_time) {

136         this.start_time = start_time;

137     }

138 

139     public String getJob_class_name() {

140         return job_class_name;

141     }

142 

143     public void setJob_class_name(String job_class_name) {

144         this.job_class_name = job_class_name;

145     }

146 

147     public String getJob_group() {

148         return job_group;

149     }

150 

151     public void setJob_group(String job_group) {

152         this.job_group = job_group;

153     }

154 

155     public String getJob_name() {

156         return job_name;

157     }

158 

159     public void setJob_name(String job_name) {

160         this.job_name = job_name;

161     }

162 

163     public String getT1() {

164         return t1;

165     }

166 

167     public void setT1(String t1) {

168         this.t1 = t1;

169     }

170 

171     public String getT2() {

172         return t2;

173     }

174 

175     public void setT2(String t2) {

176         this.t2 = t2;

177     }

178 

179     public String getT3() {

180         return t3;

181     }

182 

183     public void setT3(String t3) {

184         this.t3 = t3;

185     }

186 

187     public String getTrigger_group() {

188         return trigger_group;

189     }

190 

191     public void setTrigger_group(String trigger_group) {

192         this.trigger_group = trigger_group;

193     }

194 

195     public String getTrigger_name() {

196         return trigger_name;

197     }

198 

199     public void setTrigger_name(String trigger_name) {

200         this.trigger_name = trigger_name;

201     }

202 

203     public String getTrigger_state() {

204         return trigger_state;

205     }

206 

207     public void setTrigger_state(String trigger_state) {

208         this.trigger_state = trigger_state;

209     }

210 

211     public String getTrigger_type() {

212         return trigger_type;

213     }

214 

215     public void setTrigger_type(String trigger_type) {

216         this.trigger_type = trigger_type;

217     }

218 }

2.Dao

 1 package com.ecnt.gnop.modules.dm.quartz.dao;

 2 

 3 import java.sql.SQLException;

 4 import java.util.List;

 5 

 6 import com.ecnt.gnop.modules.dm.quartz.bean.QuartzJobBean;

 7 

 8 public interface QuartzJobDao {

 9 

10     public void insertQuartzJob(QuartzJobBean bean) throws SQLException;

11         

12     public void pauseQuartzJob(List<QuartzJobBean> list) throws SQLException;

13 }

3.DaoImplements

  1 package com.ecnt.gnop.modules.dm.quartz.dao.impl;

  2 

  3 import java.sql.CallableStatement;

  4 import java.sql.Connection;

  5 import java.sql.DriverManager;

  6 import java.sql.SQLException;

  7 import java.util.ArrayList;

  8 import java.util.List;

  9 

 10 import oracle.sql.ARRAY;

 11 import oracle.sql.ArrayDescriptor;

 12 import oracle.sql.STRUCT;

 13 import oracle.sql.StructDescriptor;

 14 

 15 import org.apache.commons.dbcp.DelegatingConnection;

 16 import org.apache.log4j.Logger;

 17 

 18 import com.ecnt.gnop.modules.dm.quartz.bean.QuartzJobBean;

 19 import com.ecnt.gnop.modules.dm.quartz.dao.QuartzJobDao;

 20 

 21 public class QuartzJobDaoImpl implements QuartzJobDao {

 22 

 23     private Logger log = Logger.getLogger(this.getClass().getName());

 24 

 25     private static Connection getConn() {

 26         String driver = "oracle.jdbc.driver.OracleDriver";

 27         String url = "jdbc:oracle:thin:@192.168.97.201:1521:fznop";

 28         String username = "bi_swxt";

 29         String password = "swxt2013";

 30         Connection conn = null;

 31         try {

 32             Class.forName(driver);

 33             // new oracle.jdbc.driver.OracleDriver();

 34             conn = DriverManager.getConnection(url, username, password);

 35         } catch (ClassNotFoundException e) {

 36             e.printStackTrace();

 37         } catch (SQLException e) {

 38             e.printStackTrace();

 39         }

 40 

 41         return conn;

 42     }

 43 

 44     /**

 45      * TOMCAT dbcp Connection --> Oracle Connection

 46      * 

 47      * @param con

 48      * @return

 49      * @throws SQLException

 50      */

 51     public static Connection getNativeConnection(Connection con) throws SQLException {

 52         if (con instanceof DelegatingConnection) {

 53             Connection nativeCon = ((DelegatingConnection) con).getInnermostDelegate();

 54             return (nativeCon != null ? nativeCon : con.getMetaData().getConnection());

 55         }

 56         return con;

 57     }

 58 

 59     public void insertQuartzJob(QuartzJobBean bean) throws SQLException {

 60         Connection conn = null;

 61         Connection oracleConn = null;

 62         CallableStatement stmt = null;

 63         String sql = "{ CALL PKG_MODULES_DM_QUARTZ.INSERT_QUARTZJOB(?) }";

 64         try {

 65             conn = getConn();

 66             oracleConn = getNativeConnection(conn);

 67             stmt = oracleConn.prepareCall(sql);

 68             StructDescriptor structDescriptor = StructDescriptor.createDescriptor("QUARTZJOBBEAN", oracleConn);

 69             Object[] objects = bean.toArray();

 70             STRUCT struct = new STRUCT(structDescriptor, oracleConn, objects);

 71             stmt.setObject(1, struct);

 72             stmt.execute();

 73         } catch (SQLException e) {

 74             log.error(e.getMessage(), e);

 75             throw e;

 76         } finally {

 77             if (stmt != null) {

 78                 try {

 79                     stmt.close();

 80                 } catch (SQLException e) {

 81                     e.printStackTrace();

 82                 }

 83             }

 84             if (conn != null) {

 85                 try {

 86                     conn.close();

 87                 } catch (SQLException e) {

 88                     e.printStackTrace();

 89                 }

 90             }

 91         }

 92     }

 93 

 94     public void pauseQuartzJob(List<QuartzJobBean> list) throws SQLException {

 95         Connection conn = null;

 96         Connection oracleConn = null;

 97         CallableStatement stmt = null;

 98         String sql = "{ CALL PKG_MODULES_DM_QUARTZ.PAUSE_QUARTZJOB(?) }";

 99         try {

100             conn = getConn();

101             oracleConn = getNativeConnection(conn);

102             stmt = oracleConn.prepareCall(sql);

103             StructDescriptor structDescriptor = StructDescriptor.createDescriptor("QUARTZJOBBEAN", oracleConn);

104             ArrayDescriptor arrayDescriptor = ArrayDescriptor.createDescriptor("QUARTZJOBARRAY", oracleConn);

105             ArrayList<STRUCT> structList = new ArrayList<STRUCT>();

106             for (QuartzJobBean bean : list) {

107                 STRUCT struct = new STRUCT(structDescriptor, oracleConn, bean.toArray());

108                 structList.add(struct);

109             }

110             ARRAY array = new ARRAY(arrayDescriptor, oracleConn, structList.toArray());

111             stmt.setArray(1, array);

112             stmt.execute();

113         } catch (SQLException e) {

114             log.error(e.getMessage(), e);

115             throw e;

116         } finally {

117             if (stmt != null) {

118                 try {

119                     stmt.close();

120                 } catch (SQLException e) {

121                     e.printStackTrace();

122                 }

123             }

124             if (conn != null) {

125                 try {

126                     conn.close();

127                 } catch (SQLException e) {

128                     e.printStackTrace();

129                 }

130             }

131         }

132     }

133 }

 

你可能感兴趣的:(oracle)