一、数据库部分

1.创建bean对象

 CREATE OR REPLACE TYPE "QUARTZJOBBEAN" as object
(
-- Author : Duwc
-- Purpose : for QuartzJobBean
job_name varchar2(200),
job_group varchar2(200),
job_class_name varchar2(250),
trigger_name varchar2(200),
trigger_group varchar2(200),
trigger_state varchar2(16),
trigger_type varchar2(8),
t1 varchar2(200),
t2 varchar2(200),
t3 varchar2(200),
is_durable varchar2(1),
is_volatile varchar2(1),
is_stateful varchar2(1),
requests_recovery varchar2(1),
priority number(13),
start_time number(13),
end_time number(13),
calendar_name varchar2(200),
misfire_instr number(2)
)

2.创建array对象

CREATE OR REPLACE TYPE "QUARTZJOBARRAY"  is table of QUARTZJOBBEAN

3.存储过程PACKAGE部分

 CREATE OR REPLACE PACKAGE PKG_MODULES_DM_QUARTZ AS

   /*插入定时任务表*/
PROCEDURE INSERT_QUARTZJOB(v_bean QUARTZJOBBEAN); /*暂停定时任务表*/
PROCEDURE PAUSE_QUARTZJOB(v_array QUARTZJOBARRAY);
END;

4.存储过程BODY部分

 CREATE OR REPLACE PACKAGE BODY PKG_MODULES_DM_QUARTZ AS
/*插入定时任务表*/
PROCEDURE INSERT_QUARTZJOB(v_bean QUARTZJOBBEAN) IS
BEGIN
insert into QRTZ_JOB_DETAILS
(JOB_NAME,
JOB_GROUP,
DESCRIPTION,
JOB_CLASS_NAME,
IS_DURABLE,
IS_VOLATILE,
IS_STATEFUL,
REQUESTS_RECOVERY)
values
(v_bean.job_name,
v_bean.job_group,
v_bean.job_name,
v_bean.job_class_name,
v_bean.is_durable,
v_bean.is_volatile,
v_bean.is_stateful,
v_bean.requests_recovery); insert into QRTZ_TRIGGERS
(TRIGGER_NAME,
TRIGGER_GROUP,
JOB_NAME,
JOB_GROUP,
IS_VOLATILE,
PRIORITY,
TRIGGER_STATE,
TRIGGER_TYPE,
START_TIME,
END_TIME,
CALENDAR_NAME,
MISFIRE_INSTR)
values
(v_bean.trigger_name,
v_bean.trigger_group,
v_bean.job_name,
v_bean.job_group,
v_bean.is_volatile,
v_bean.priority,
v_bean.trigger_state,
v_bean.trigger_type,
v_bean.start_time,
v_bean.end_time,
v_bean.calendar_name,
v_bean.misfire_instr); if v_bean.trigger_type = 'CRON' then
insert into QRTZ_CRON_TRIGGERS
(TRIGGER_NAME, TRIGGER_GROUP, CRON_EXPRESSION, TIME_ZONE_ID)
values
(v_bean.trigger_name,
v_bean.trigger_group,
v_bean.t1,
'Asia/Shanghai');
elsif v_bean.trigger_type = 'SIMPLE' then
insert into QRTZ_SIMPLE_TRIGGERS
(TRIGGER_NAME,
TRIGGER_GROUP,
REPEAT_COUNT,
REPEAT_INTERVAL,
TIMES_TRIGGERED)
values
(v_bean.trigger_name,
v_bean.trigger_group,
to_number(v_bean.t2),
to_number(v_bean.t3),
0);
end if;
commit;
END; /*暂停定时任务表*/
PROCEDURE PAUSE_QUARTZJOB(v_array QUARTZJOBARRAY) IS
v_bean QUARTZJOBBEAN;
BEGIN
for i in v_array.first .. v_array.last loop
v_bean := v_array(i);
update QRTZ_TRIGGERS
set TRIGGER_STATE = 'PAUSED'
where trigger_name = v_bean.trigger_name
and trigger_group = v_bean.trigger_group;
commit;
end loop;
END; END;

二、dao部分

1.创建bean对象

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

 public class QuartzJobBean {

     private String job_name;

     private String job_group;

     private String job_class_name;

     private String trigger_name;

     private String trigger_group;

     private String trigger_state;

     private String trigger_type;

     private String t1;

     private String t2;

     private String t3;

     private String is_durable;

     private String is_volatile;

     private String is_stateful;

     private String requests_recovery;

     private int priority;

     private int start_time;

     private int end_time;

     private String calendar_name;

     private String misfire_instr;

     public Object[] toArray() {
Object[] obj = new Object[19];
obj[0] = job_name;
obj[1] = job_group;
obj[2] = job_class_name;
obj[3] = trigger_name;
obj[4] = trigger_group;
obj[5] = trigger_state;
obj[6] = trigger_type;
obj[7] = t1;
obj[8] = t2;
obj[9] = t3;
obj[10] = is_durable;
obj[11] = is_volatile;
obj[12] = is_stateful;
obj[13] = requests_recovery;
obj[14] = priority;
obj[15] = start_time;
obj[16] = end_time;
obj[17] = calendar_name;
obj[18] = misfire_instr;
return obj;
} public String getCalendar_name() {
return calendar_name;
} public void setCalendar_name(String calendar_name) {
this.calendar_name = calendar_name;
} public int getEnd_time() {
return end_time;
} public void setEnd_time(int end_time) {
this.end_time = end_time;
} public String getIs_durable() {
return is_durable;
} public void setIs_durable(String is_durable) {
this.is_durable = is_durable;
} public String getIs_stateful() {
return is_stateful;
} public void setIs_stateful(String is_stateful) {
this.is_stateful = is_stateful;
} public String getIs_volatile() {
return is_volatile;
} public void setIs_volatile(String is_volatile) {
this.is_volatile = is_volatile;
} public String getMisfire_instr() {
return misfire_instr;
} public void setMisfire_instr(String misfire_instr) {
this.misfire_instr = misfire_instr;
} public int getPriority() {
return priority;
} public void setPriority(int priority) {
this.priority = priority;
} public String getRequests_recovery() {
return requests_recovery;
} public void setRequests_recovery(String requests_recovery) {
this.requests_recovery = requests_recovery;
} public int getStart_time() {
return start_time;
} public void setStart_time(int start_time) {
this.start_time = start_time;
} public String getJob_class_name() {
return job_class_name;
} public void setJob_class_name(String job_class_name) {
this.job_class_name = job_class_name;
} public String getJob_group() {
return job_group;
} public void setJob_group(String job_group) {
this.job_group = job_group;
} public String getJob_name() {
return job_name;
} public void setJob_name(String job_name) {
this.job_name = job_name;
} public String getT1() {
return t1;
} public void setT1(String t1) {
this.t1 = t1;
} public String getT2() {
return t2;
} public void setT2(String t2) {
this.t2 = t2;
} public String getT3() {
return t3;
} public void setT3(String t3) {
this.t3 = t3;
} public String getTrigger_group() {
return trigger_group;
} public void setTrigger_group(String trigger_group) {
this.trigger_group = trigger_group;
} public String getTrigger_name() {
return trigger_name;
} public void setTrigger_name(String trigger_name) {
this.trigger_name = trigger_name;
} public String getTrigger_state() {
return trigger_state;
} public void setTrigger_state(String trigger_state) {
this.trigger_state = trigger_state;
} public String getTrigger_type() {
return trigger_type;
} public void setTrigger_type(String trigger_type) {
this.trigger_type = trigger_type;
}
}

2.Dao

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

 import java.sql.SQLException;
import java.util.List; import com.ecnt.gnop.modules.dm.quartz.bean.QuartzJobBean; public interface QuartzJobDao { public void insertQuartzJob(QuartzJobBean bean) throws SQLException; public void pauseQuartzJob(List<QuartzJobBean> list) throws SQLException;
}

3.DaoImplements

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

 import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;
import oracle.sql.STRUCT;
import oracle.sql.StructDescriptor; import org.apache.commons.dbcp.DelegatingConnection;
import org.apache.log4j.Logger; import com.ecnt.gnop.modules.dm.quartz.bean.QuartzJobBean;
import com.ecnt.gnop.modules.dm.quartz.dao.QuartzJobDao; public class QuartzJobDaoImpl implements QuartzJobDao { private Logger log = Logger.getLogger(this.getClass().getName()); private static Connection getConn() {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@192.168.97.201:1521:fznop";
String username = "bi_swxt";
String password = "swxt2013";
Connection conn = null;
try {
Class.forName(driver);
// new oracle.jdbc.driver.OracleDriver();
conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} return conn;
} /**
* TOMCAT dbcp Connection --> Oracle Connection
*
* @param con
* @return
* @throws SQLException
*/
public static Connection getNativeConnection(Connection con) throws SQLException {
if (con instanceof DelegatingConnection) {
Connection nativeCon = ((DelegatingConnection) con).getInnermostDelegate();
return (nativeCon != null ? nativeCon : con.getMetaData().getConnection());
}
return con;
} public void insertQuartzJob(QuartzJobBean bean) throws SQLException {
Connection conn = null;
Connection oracleConn = null;
CallableStatement stmt = null;
String sql = "{ CALL PKG_MODULES_DM_QUARTZ.INSERT_QUARTZJOB(?) }";
try {
conn = getConn();
oracleConn = getNativeConnection(conn);
stmt = oracleConn.prepareCall(sql);
StructDescriptor structDescriptor = StructDescriptor.createDescriptor("QUARTZJOBBEAN", oracleConn);
Object[] objects = bean.toArray();
STRUCT struct = new STRUCT(structDescriptor, oracleConn, objects);
stmt.setObject(1, struct);
stmt.execute();
} catch (SQLException e) {
log.error(e.getMessage(), e);
throw e;
} finally {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} public void pauseQuartzJob(List<QuartzJobBean> list) throws SQLException {
Connection conn = null;
Connection oracleConn = null;
CallableStatement stmt = null;
String sql = "{ CALL PKG_MODULES_DM_QUARTZ.PAUSE_QUARTZJOB(?) }";
try {
conn = getConn();
oracleConn = getNativeConnection(conn);
stmt = oracleConn.prepareCall(sql);
StructDescriptor structDescriptor = StructDescriptor.createDescriptor("QUARTZJOBBEAN", oracleConn);
ArrayDescriptor arrayDescriptor = ArrayDescriptor.createDescriptor("QUARTZJOBARRAY", oracleConn);
ArrayList<STRUCT> structList = new ArrayList<STRUCT>();
for (QuartzJobBean bean : list) {
STRUCT struct = new STRUCT(structDescriptor, oracleConn, bean.toArray());
structList.add(struct);
}
ARRAY array = new ARRAY(arrayDescriptor, oracleConn, structList.toArray());
stmt.setArray(1, array);
stmt.execute();
} catch (SQLException e) {
log.error(e.getMessage(), e);
throw e;
} finally {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}

(java oracle)以bean和array为参数的存储过程及dao部分代码的更多相关文章

  1. Oracle使用jdbc调用带游标参数的存储过程

    package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import ja ...

  2. Oracle数据库中in()参数超过一千报错代码报错

    转载请注明出处:http://www.cnblogs.com/xunzhaorendaxia/p/8570604.html 解决方案将select * from tablename where fie ...

  3. xml配置和基于java类的bean配置搭配使用

    如果同时使用了xml配置,和java类的bean配置(当然估计项目中一般不会这样), 在初始化容器指定资源文件的时候可能会比较麻烦 此时我们可以把基于java类的bean配置整合到xml中,或xml的 ...

  4. 开涛spring3(12.4) - 零配置 之 12.4 基于Java类定义Bean配置元数据

    12.4  基于Java类定义Bean配置元数据 12.4.1  概述 基于Java类定义Bean配置元数据,其实就是通过Java类定义Spring配置元数据,且直接消除XML配置文件. 基于Java ...

  5. ORACLE的init.ora配置文件中参数详解

    db_name = "orcl"   一个数据库标识符,应与CREATE DATABASE 语句中指定的名称相对应. instance_name = orcl在多个例程使用相同服务 ...

  6. 阿里P7浅谈Java的Spring Bean

    1.简单java 类,实现 Serializable 接口 package com.curtis.bean;import java.io.Serializable;@SuppressWarnings( ...

  7. JDBC:JAVA & Oracle

    JDBC:JAVA & Oracle 本文中未加标注的资源均来自于PolyU数据库课程的实验材料.仅作为学习使用,如有侵权,请联系删除 JDBC是什么 我之前写过一篇关于数据库和JAVA的博文 ...

  8. Java虚拟机3:常用JVM命令参数

    之后写的东西就会用到虚拟机参数了,现在这里汇个总自己平时用到的.看到的一些虚拟机参数.现在看不懂没关系,反正之后都会用到的: (1)-Xms20M 表示设置堆容量的最小值为20M,必须以M为单位 (2 ...

  9. [Java] xms xmx XX:PermSize XX:MaxPermSize 参数意义解析

    今天在做jmeter压力测试时又出现以前经常出现的异常,如下图,长时间不弄这个的,又有点不知所措了,所以干脆再来总结一下问题: 以前写过两篇文章,对这个问题研究过,见下面连接: 连接1:http:// ...

随机推荐

  1. 模拟搭建Web项目的真实运行环境(三)

    一.解决Redis出现的RDB权限问题 当你在安装redis的时候,如果是使用超级用户root安装, 开启redis服务的时候没有用超级用户去开启, 在用客户端登录redis,然后使用shutdown ...

  2. TFS二次开发系列:三、TFS二次开发的第一个实例

    首先我们需要认识TFS二次开发的两大获取服务对象的类. 他们分别为TfsConfigurationServer和TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS ...

  3. Oracl基础知识(一)

    概述 Oracle功能繁多,接触Oracle不深,将接触到的基础知识整理下来,以便不时之需.整理的内容主要有Expdp指令实现数据库备份,Impdp指令实现数据库还原,以及用户.表空间的定义.整理的数 ...

  4. Power BI for Office 365(一)移动端应用

    此篇来自于微软商业智能网站的官方博客团队发布的Power BI在线资料其中的一部分,完整版地址: http://office.microsoft.com/en-us/office365-sharepo ...

  5. JS高级程序设计笔记一

    /*设置自定义属性*/ var div=document.querySelector("#div1"); div.setAttribute("title",&q ...

  6. EpochConverter

    地址:http://www.epochconverter.com/ How to get the current epoch time in ... PHP time() more ... Pytho ...

  7. mysql数据库链接与创建

    有童鞋问到说,环境搭建好了,mysql也安装了,但是就是进不去数据库,也启动不了,一直报错,那么下面这边就说下如何用Navicat链接上创建的数据库 首先 1)在xshell里进入mysql,命令是: ...

  8. 使用sp_xml_preparedocument处理XML文档

    有时会在存储过程中处理一些XML格式的数据,所以会用到sp_xml_preparedocument,他可以将XML数据进行读取,然后使用 MSXML 分析器 (Msxmlsql.dll) 对其进行分析 ...

  9. Leetcode Valid Sudoku

    Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...

  10. 推流和拉流的概念以及RTMP和HLS协议

    推流为将直播内容推送至服务器的过程:拉流为服务器已有直播内容,用指定地址进行拉取的过程. rtmp rtmp是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写. ...