⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basedaoimpl.java

📁 项目支付宝批量打款,采用httpclient+spring +quarz实现.
💻 JAVA
字号:
package com.szhelper.pay.dao.impl;

import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.CallableStatementCallback;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

import com.szhelper.pay.dao.IBaseDao;
import com.szhelper.pay.sql.util.DaoRowMapper;
import com.szhelper.pay.sql.util.SQLUtils;

/**
 * @author Fang
 * @version 1.0
 * @date : 2008-08-06
 */
public class BaseDaoImpl extends JdbcDaoSupport implements IBaseDao {
	private static String SELECT_COUNT = "select count(*) from ";
	private static String SELECT_FROM = "select * from ";
	private static String DELETE_FROM = "delete from ";

	private static String WHERE = " where ";
	private static String UPDATE = " update ";
	private static String SET = " set ";

	private static String ORDER_BY_ID = " order by id desc ";

	private String tableName;
	private String modelClassName;
	private String keyColumn;
	private String delFalgColumn;
	private static Logger logger = Logger.getLogger(BaseDaoImpl.class);

	public void setKeyColumn(String keyColumn) {
		this.keyColumn = keyColumn;
	}

	public void setTableName(String tableName) {
		this.tableName = tableName;
	}

	public void setDelFalgColumn(String delFalgColumn) {
		this.delFalgColumn = delFalgColumn;
	}

	/**
	 * 获取Dao对应模型的类型
	 * 
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private Class getModelClass() {
		Class cls = null;
		try {
			cls = Class.forName(modelClassName);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return cls;
	}

	public boolean deleteObject(Object id) {
		String sql = DELETE_FROM + tableName + WHERE + keyColumn + "=?";
		try {
			System.out.println(sql);
			getJdbcTemplate().update(sql, new Object[] { id });
		} catch (Exception e) {
			logger.equals(e);
			e.printStackTrace();
			return false;
		}
		return true;
	}

	public boolean deleteDummObject(Object id) {
		String sql = UPDATE + tableName + SET + delFalgColumn + "=1   where "
				+ keyColumn + "=?";
		try {
			System.out.println("dummy delete:" + sql);
			getJdbcTemplate().update(sql, new Object[] { id });
		} catch (Exception e) {
			e.printStackTrace();
			logger.equals(e);
			return false;
		}
		return true;
	}

	public List findAllObject() {
		String sql = SELECT_FROM + tableName + ORDER_BY_ID;
		return getJdbcTemplate().query(sql, new DaoRowMapper(getModelClass()));
	}

	public List findScopedObject(String... conditions) {
		StringBuffer sql = new StringBuffer();
		sql.append(SELECT_FROM);
		sql.append(tableName);
		if (conditions != null) {
			sql.append(WHERE);
			int i = 0;
			for (String condition : conditions) {
				if (i == 0) {
					sql.append(condition);
				} else {
					sql.append(" and " + condition);
				}
				i++;
			}
		}
		sql.append(ORDER_BY_ID);
		System.out.println(sql.toString());
		return getJdbcTemplate().query(sql.toString(),
				new DaoRowMapper(getModelClass()));
	}

	public Object findObjectByID(Object id) {
		String sql = SELECT_FROM + tableName + WHERE + keyColumn + "=?";
		System.out.println(sql);
		return getJdbcTemplate().queryForObject(sql, new Object[] { id },
				new DaoRowMapper(getModelClass()));
	}

	public boolean insertObject(Object obj) {
		Object[] sqlAndParams = SQLUtils.generateInsert(obj, tableName,
				keyColumn);
		try {
			getJdbcTemplate().update((String) sqlAndParams[0],
					(Object[]) sqlAndParams[1]);
		} catch (Exception e) {
			e.printStackTrace();
			logger.equals(e);
			return false;
		}
		return true;
	}

	public boolean updateObject(Object obj) {
		Object[] sqlAndParams = SQLUtils.generateUpdate(obj, tableName,
				keyColumn);
		try {
			getJdbcTemplate().update((String) sqlAndParams[0],
					(Object[]) sqlAndParams[1]);
		} catch (Exception e) {
			e.printStackTrace();
			logger.equals(e);
			return false;
		}
		return true;
	}

	private int getModelListCount(String... conditions) {
		StringBuffer sb = new StringBuffer();
		sb.append(SELECT_COUNT);
		sb.append(tableName);
		if (conditions != null) {
			sb.append(WHERE);
			int i = 0;
			for (String condition : conditions) {
				if (i == 0) {
					sb.append(condition);
				} else {
					sb.append(" and " + condition);
				}
				i++;
			}
		}
		return getModelListCountBySql(sb.toString());
	}

	public int getModelListCountBySql(String sql) {
		return getJdbcTemplate().queryForInt(sql.toString());
	}

	/**
	 * 执行存储过程
	 * 
	 * @param processName
	 * @param args
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List executeProcess(String processName) {
		return executeProcess(processName,null);
	}
	/**
	 * 执行存储过程
	 * 
	 * @param processName
	 * @param args
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List executeProcess(String processName, final Object... args) {
		StringBuilder sql = new StringBuilder();
		sql.append("{call " + processName + " ( ");
		if (args != null) {
			for (int i = 0; i < args.length; i++) {
				sql.append("?");
				if (i < args.length - 1) {
					sql.append(",");
				}
			}
			
		}
		sql.append(" )}");
		if (logger.getEffectiveLevel().equals(Level.DEBUG)) {
			String debugInfo = "";
			if (args != null) {
				for (int i = 0; i < args.length; i++) {
					debugInfo += "'" + args[i] + "'";
					if (i < args.length - 1) {
						debugInfo += ",";
					}
				}
			}
			logger.debug("执行存储过程.开始,{call " + processName + " ( " + debugInfo
					+ " )}");
		}

		return (List) getJdbcTemplate().execute(sql.toString(),
				new CallableStatementCallback() {
					public Object doInCallableStatement(CallableStatement cs)
							throws SQLException, DataAccessException {
						if (args != null) {
							for (int i = 0; i < args.length; i++) {
								cs.setObject(i + 1, args[i]);
							}
						}
						ResultSet resultSet = cs.executeQuery();
						List list = new ArrayList();

						while (resultSet.next()) {
							Object object = DaoRowMapper.mapRow(getModelClass(),
									resultSet);
							list.add(object);
						}
						logger.debug("执行存储过程.完成,结果:size=" + list.size());
						for (int i = 0; i < list.size(); i++) {
							logger.debug((i + 1) + "=" + list.get(i));
						}
						return list;
					}
				});
	}

	public String getModelClassName() {
		return modelClassName;
	}

	public void setModelClassName(String modelClassName) {
		this.modelClassName = modelClassName;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -