首页 > 代码库 > (java oracle)以bean和array为参数的存储过程及dao部分代码
(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 AS2 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 values15 (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_TRIGGERS25 (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 values38 (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‘ then52 insert into QRTZ_CRON_TRIGGERS53 (TRIGGER_NAME, TRIGGER_GROUP, CRON_EXPRESSION, TIME_ZONE_ID)54 values55 (v_bean.trigger_name,56 v_bean.trigger_group,57 v_bean.t1,58 ‘Asia/Shanghai‘);59 elsif v_bean.trigger_type = ‘SIMPLE‘ then60 insert into QRTZ_SIMPLE_TRIGGERS61 (TRIGGER_NAME,62 TRIGGER_GROUP,63 REPEAT_COUNT,64 REPEAT_INTERVAL,65 TIMES_TRIGGERED)66 values67 (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) IS78 v_bean QUARTZJOBBEAN;79 BEGIN80 for i in v_array.first .. v_array.last loop81 v_bean := v_array(i);82 update QRTZ_TRIGGERS83 set TRIGGER_STATE = ‘PAUSED‘84 where trigger_name = v_bean.trigger_name85 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 }
(java oracle)以bean和array为参数的存储过程及dao部分代码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。