(java oracle)以bean和array为参数的存储过程及dao部分代码
一、数据库部分
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部分代码的更多相关文章
- Oracle使用jdbc调用带游标参数的存储过程
package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import ja ...
- Oracle数据库中in()参数超过一千报错代码报错
转载请注明出处:http://www.cnblogs.com/xunzhaorendaxia/p/8570604.html 解决方案将select * from tablename where fie ...
- xml配置和基于java类的bean配置搭配使用
如果同时使用了xml配置,和java类的bean配置(当然估计项目中一般不会这样), 在初始化容器指定资源文件的时候可能会比较麻烦 此时我们可以把基于java类的bean配置整合到xml中,或xml的 ...
- 开涛spring3(12.4) - 零配置 之 12.4 基于Java类定义Bean配置元数据
12.4 基于Java类定义Bean配置元数据 12.4.1 概述 基于Java类定义Bean配置元数据,其实就是通过Java类定义Spring配置元数据,且直接消除XML配置文件. 基于Java ...
- ORACLE的init.ora配置文件中参数详解
db_name = "orcl" 一个数据库标识符,应与CREATE DATABASE 语句中指定的名称相对应. instance_name = orcl在多个例程使用相同服务 ...
- 阿里P7浅谈Java的Spring Bean
1.简单java 类,实现 Serializable 接口 package com.curtis.bean;import java.io.Serializable;@SuppressWarnings( ...
- JDBC:JAVA & Oracle
JDBC:JAVA & Oracle 本文中未加标注的资源均来自于PolyU数据库课程的实验材料.仅作为学习使用,如有侵权,请联系删除 JDBC是什么 我之前写过一篇关于数据库和JAVA的博文 ...
- Java虚拟机3:常用JVM命令参数
之后写的东西就会用到虚拟机参数了,现在这里汇个总自己平时用到的.看到的一些虚拟机参数.现在看不懂没关系,反正之后都会用到的: (1)-Xms20M 表示设置堆容量的最小值为20M,必须以M为单位 (2 ...
- [Java] xms xmx XX:PermSize XX:MaxPermSize 参数意义解析
今天在做jmeter压力测试时又出现以前经常出现的异常,如下图,长时间不弄这个的,又有点不知所措了,所以干脆再来总结一下问题: 以前写过两篇文章,对这个问题研究过,见下面连接: 连接1:http:// ...
随机推荐
- 使用原生ajax处理json组成的数组
和前一篇文章一样,直接上代码了,只是做个记录. 数据的提供页面,tigong.php <?php header("content-type:text/html;charset=utf- ...
- Java中简单的操作(if语句、常用操作符、switch语句、变量赋值等)
---------------------if语句介绍--------------------------------------------------- class IfDemo { public ...
- thinkphp 3.23语言包加载
模块home: 1.config 里添加 配置 //'配置项'=>'配置值' 'LANG_SWITCH_ON' => true, // 开启语言包功能 'LANG ...
- 不用写Windows服务实现定时器功能(FluentScheduler )
MacBook Pro 只有四个 USB Type-C 接口是否错了? 一项新技术的诞生总会对已存在的事物造成冲击或影响,如果大家都害怕冲击与影响,那这个世界永远像现在不变就行了,大家都好好的,待在自 ...
- SQL SERVER 中的提示
提示是指定的强制选项或策略,由 SQL Server 查询处理器针对 SELECT.INSERT.UPDATE 或 DELETE 语句执行. 提示将覆盖查询优化器可能为查询选择的任何执行计划. 注意: ...
- UWP crop image control
最近做项目,需求做一个剪切图片的东东.如下图 主要是在一个canvas上面.根据crop的大小画出半透明的效果 <Canvas x:Name="imageCanvas" Vi ...
- [工作中的设计模式]组合模式compnent
一.模式解析 将对象组合成树形结构以表示“部分整体”的层次结构.组合模式使得用户对单个对象和使用具有一致性. 组合模式的要点是: 1.对象整体以树形层次结构进行展示 2.树的根节点和子节点均可以添加删 ...
- linux系统meminfo详解(待补充)
========================================================================================== MemTotal: ...
- Android -- 自定义控件(ImageButton)
1. 效果图
- Linux查看进程PID信息
ps -ef|grep 进程名 可检索到具体进程PID以及启动命令行信息 ls -l /proc/进程ID Linux在启动程序时会在 /proc/PID 目录下以PID为名称创建一个文件存储相关进程 ...