oracle游标的使用

package com.xxxx.project.accountcheck.accordOrgCheck;


import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import oracle.jdbc.OracleTypes;

import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.hibernate.SessionFactory;
import org.hibernate.connection.ConnectionProvider;
import org.hibernate.engine.SessionFactoryImplementor;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.xxxx.common.BaseAction;
import com.xxxx.common.BaseDao;




/**
 * 支付提现 对账       按照运营机构号统计     对账action
 * @author 
 * @date 2016-3-18   上午09:36:00
 */

@Controller
@Scope("prototype")
public class AccordOrgCheckAction extends BaseDao{
	private Logger log = Logger.getLogger(this.getClass());
	private String searchTime;//搜索时间
	private String wallettype;//        支付         提现
	private String msg;
	/**
	 * 调用存储过程所需参数
	 */
	private String i_settle_date;//查询日期
	private String i_type;//钱包操作类型   支付,提现
	private Object o_rescursor="";//游标
	private String procName = "{call xxxx_COUNT_xxx_ORGCODE(?,?,?)}";//存储过程名字
	/**
	 * 传输到页面的数据
	 * @return
	 * @date 2016-3-18下午03:54:24
	 */
	private List<AccordOrgCheck> AccordOrgCheckList;
	private String orgcode;
	private String total_count;
	private String total_money;
	public String accordOrgCheckList(){
		if(searchTime==null){//如果查询时间为空则默认查询昨天的
			//赋默认值
			log.info("默认查询日期为昨天");
			Calendar cal= Calendar.getInstance();
			cal.add(Calendar.DATE, -1);
			String yesterday = new SimpleDateFormat( "yyyy-MM-dd").format(cal.getTime());
			searchTime=yesterday;
		}
		String searchTimeStr =searchTime.replaceAll("-", "") ;
		//调用存储过程
		AccordOrgCheckList = excuteProcForMapString(procName,searchTimeStr, wallettype, o_rescursor);
		if(("[]").equals(AccordOrgCheckList.toString())){
			//该天无记录
			HttpServletRequest request = ServletActionContext.getRequest();
			request.setAttribute("page","<div style='font-size: 18px;height: 30px;line-height: 30px;text-align:center;'><font size=2>暂无记录!</font></div>");
		}
		return "accordOrgCheckList";
	}
	/**
	 * 调用存储过程方法
	 * @return
	 * @date 2016-3-18下午03:20:46
	 */
	private List<AccordOrgCheck> excuteProcForMapString(String procName,String searchTimeStr,String wallettype,Object o_rescursor ){
		CallableStatement statement = null;
		ResultSet rs = null;
		AccordOrgCheckList = new ArrayList<AccordOrgCheck>();
		AccordOrgCheck aoc ;
		SessionFactory sessionFactory = this.getSessionFactory();
		if (sessionFactory instanceof SessionFactoryImplementor){
			ConnectionProvider cp = ((SessionFactoryImplementor) sessionFactory)
			.getConnectionProvider();
			try {
				statement = cp.getConnection().prepareCall(procName);
				statement.setString(1, searchTimeStr);
				statement.setString(2, wallettype);
				statement.registerOutParameter(3, OracleTypes.CURSOR);
				statement.execute();
				rs = (ResultSet) statement.getObject(3);
				while(rs.next()){
					aoc = new AccordOrgCheck();
					orgcode = rs.getString("orgcode");
					total_count = String.valueOf(rs.getInt("total_count"));
					total_money = String.valueOf(rs.getDouble("total_money"));
					aoc.setOrgcode(orgcode);
					aoc.setTotal_count(total_count);
					aoc.setTotal_money(total_money);
					
					AccordOrgCheckList.add(aoc);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			} finally{
				cp.close();
			}
		}
		return AccordOrgCheckList;
	}

	public String getSearchTime() {
		return searchTime;
	}

	public void setSearchTime(String searchTime) {
		this.searchTime = searchTime;
	}

	public String getWallettype() {
		return wallettype;
	}

	public void setWallettype(String wallettype) {
		this.wallettype = wallettype;
	}
	public Logger getLog() {
		return log;
	}
	public void setLog(Logger log) {
		this.log = log;
	}
	public String getI_settle_date() {
		return i_settle_date;
	}
	public void setI_settle_date(String iSettleDate) {
		i_settle_date = iSettleDate;
	}
	public String getI_type() {
		return i_type;
	}
	public void setI_type(String iType) {
		i_type = iType;
	}
	public Object getO_rescursor() {
		return o_rescursor;
	}
	public void setO_rescursor(Object oRescursor) {
		o_rescursor = oRescursor;
	}
	public String getProcName() {
		return procName;
	}
	public void setProcName(String procName) {
		this.procName = procName;
	}
	public String getOrgcode() {
		return orgcode;
	}
	public void setOrgcode(String orgcode) {
		this.orgcode = orgcode;
	}
	public String getTotal_count() {
		return total_count;
	}
	public void setTotal_count(String totalCount) {
		total_count = totalCount;
	}
	public String getTotal_money() {
		return total_money;
	}
	public void setTotal_money(String totalMoney) {
		total_money = totalMoney;
	}
	public List<AccordOrgCheck> getAccordOrgCheckList() {
		return AccordOrgCheckList;
	}
	public void setAccordOrgCheckList(List<AccordOrgCheck> accordOrgCheckList) {
		AccordOrgCheckList = accordOrgCheckList;
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值