首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

spring jdbc打包通用DAO方法

2012-09-20 
spring jdbc封装通用DAO方法1、接口定义package com.gkhb.mis.core.daoimport java.util.Listimport java

spring jdbc封装通用DAO方法

1、接口定义

package com.gkhb.mis.core.dao;

import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.SqlParameter;

/**
?* @corporation gkhb
?* @author?

?* @date 2008-4-9 下午03:03:54
?* @path com.gkhb.mis.core.dao
?* @description
?*/
public interface IOperationGenericDao {
?
?public static final String DAO = "operationGenericDao";
?
?public Page findByPage(String sql, Page page, Object... values);

?public List<?> findRow(String sql, Object... values);

?public Map<?, ?> getRow(String sql, Object... values);

?public int saveRow(String sql, Object... values);

?public Map<?, ?> executeStroeProcedure(String procedureName,
???SqlParameter[] procedureParameters, Object... parameterValues);

}
2、接口实现

package com.gkhb.mis.core.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.jdbc.object.StoredProcedure;

/**
?* @corporation gkhb
?* @author?

?* @date 2008-4-9 下午03:04:47
?* @path com.gkhb.mis.core.dao
?* @description 通用业务数据访问处理
?*/
public class OperationGenericDaoJdbcImp extends JdbcDaoSupport implements
??IOperationGenericDao {
?protected final Log LOG = LogFactory.getLog(this.getClass());

?/**
? * @desc
? * @date 2008-11-7
? * @author?

? * @parameter List={map}
? * @see com.gkhb.mis.core.dao.IOperationGenericDao#findByPage(java.lang.String,
? *????? com.gkhb.mis.core.dao.Page, java.lang.Object[])
? */
?public Page findByPage(String sql, Page page, Object... values) {
??LOG.debug("===findByPage===sql=====" + sql);
??StringBuffer totalSQL = new StringBuffer(" SELECT count(*) FROM ( ");
??totalSQL.append(sql);
??totalSQL.append(" ) totalTable ");
??int totalCount = getJdbcTemplate().queryForInt(totalSQL.toString(),values);
??int lastIndex = page.getStart() + page.getPageSize();

??StringBuffer paginationSQL = new StringBuffer(" SELECT * FROM ( ");
??paginationSQL.append(" SELECT temp.* ,ROWNUM num FROM ( ");
??paginationSQL.append(sql);
??paginationSQL.append(" ) temp where ROWNUM <= " + lastIndex);
??paginationSQL.append(" ) WHERE num > " + page.getStart());

??page.setResult(getJdbcTemplate().queryForList(paginationSQL.toString(),
????values));
??page.setTotalCount(totalCount);
??return page;
?}

?/**
? * @desc list={Map}
? * @date 2008-11-7
? * @author

? * @parameter
? * @see com.gkhb.mis.core.dao.IOperationGenericDao#findRow(java.lang.String,
? *????? java.lang.Object[])
? */
?public List<?> findRow(String sql, Object... values) {
??LOG.debug("===findRow===sql=====" + sql);
??return getJdbcTemplate().queryForList(sql, values);
?}

?public Map<?, ?> getRow(String sql, Object... values) {
??LOG.debug("===getRow===sql=====" + sql);
??return getJdbcTemplate().queryForMap(sql, values);
?}

?public int saveRow(String sql, Object... values) {
??LOG.debug("===saveRow===sql=====" + sql);
??return getJdbcTemplate().update(sql, values);
?}

?/**
? * @description
? * @date 2008-7-7
? * @author?

? * @param procedureName
? * @param procedureParameters
? * @return}
? */
?public Map<?, ?> executeStroeProcedure(String procedureName,
???SqlParameter[] procedureParameters, Object... parameterValues) {
??CustomStoredProcedure sproc = new CustomStoredProcedure(
????getDataSource(), procedureName, procedureParameters);
??Map<?, ?> out = sproc.execute(parameterValues);
??return out;
?}

?private class CustomStoredProcedure extends StoredProcedure {
??public CustomStoredProcedure(DataSource ds, String proname,
????SqlParameter[] parameters) {
???setDataSource(ds);
???setFunction(false);
???setSql(proname);
???this.setParameters(parameters);
???// declareParameter(new SqlParameter("g_gdfgsbm", Types.VARCHAR));
???// declareParameter(new SqlParameter("g_cbyear", Types.NUMERIC));
???// declareParameter(new SqlParameter("g_cbmonth", Types.NUMERIC));
???compile();
???
???
???
??}

??@SuppressWarnings("unchecked")
??public Map execute(Object... p) {
???Map inParams = new HashMap();
???int dpsize = this.getDeclaredParameters().size();
???for (int i = 0; i < dpsize; i++) {
????SqlParameter s = (SqlParameter) this.getDeclaredParameters()
??????.get(i);
????inParams.put(s.getName(), p[i]);

???}
???Map out = execute(inParams);
???return out;
??}
?}

}
3、实际调用

package com.gkhb.t3.crm.reportImpl;

import java.sql.Types;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.gkhb.mis.core.dao.IOperationGenericDao;
import com.gkhb.t3.crm.report.CashierPaymentReport;
import com.gkhb.t3.crm.report.ICashierPaymentReport;

/**
?* @author?

?*
?*/

@Service(ICashierPaymentReport.SERVICE)
@Transactional
public class CashierPaymentReportImpl implements ICashierPaymentReport {
?@Autowired
?private IOperationGenericDao jdbcDao;

?@Override
?public List<CashierPaymentReport> reportFind(Map sc) {
??String hql = "select * from crm_report_cnszrb t where? to_char(t.rq,'yyyy-mm-dd')? between ? and? ?? and t.groupId like ?? order by t.rq desc ";
??// String hql = "select * from crm_report_cnszrb ";
??String startRq = (String) sc.get("startRq");
??String endRq = (String) sc.get("endRq");
??String groupId = (String) sc.get("groupId");

??SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
??Date startRq1 = null;
??try {
???startRq1 = format.parse(startRq);
??} catch (ParseException e) {
???e.printStackTrace();
??}
??Date endRq1 = null;
??try {
???endRq1 = format.parse(endRq);
??} catch (ParseException e) {
???e.printStackTrace();
??}
??SqlParameter rq = new SqlParameter(Types.VARCHAR);
??// 统计报表
??System.out.println("========== start ===========");
??jdbcDao.executeStroeProcedure("crm_fee_cnszrbreport",
????new SqlParameter[] {
??????new SqlParameter("l_start", Types.DATE),//存储过程参数名称及数据类型l_start
??????new SqlParameter("l_end", Types.DATE),//存储过程参数名称l_end
??????new SqlParameter("l_groupid", Types.INTEGER)// 存储过程参数名称l_groupid
??????},
????new Object[] {
????startRq1, endRq1, new Integer(groupId) //三个参数对应的值
????});
??System.out.println("========== end ==============");

??// 查询报表
??List reportMap = jdbcDao.findRow(hql, new Object[] {startRq, endRq,
????groupId });

??List<CashierPaymentReport> CashierPaymentReportVo = new ArrayList<CashierPaymentReport>();
??for (int j = 0; j < reportMap.size(); j++) {
???CashierPaymentReport temp = new CashierPaymentReport();
???Map tem = (Map) reportMap.get(j);
???temp.setRQ((Date) tem.get("rq"));
???temp.setDJBH((String) tem.get("djbh"));
???temp.setDJLX((String) tem.get("djlx"));
???temp.setZJ((String) tem.get("zj"));
???temp.setJBR((String) tem.get("jbr"));
???temp.setSRJE((Number) tem.get("srje"));
???temp.setZCJE((Number) tem.get("zcje"));
???CashierPaymentReportVo.add(temp);
??}
??return CashierPaymentReportVo;
?}

}

热点排行