📄 basedaoimpl.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 + -