package mtn.gfkd.ceip.jdbc;
import java.sql.Blob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcOperations;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcDaoSupport;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.support.rowset.ResultSetWrappingSqlRowSet;
import org.springframework.util.Assert;
import mtn.gfkd.ceip.dao.TreeDAO;
import mtn.gfkd.ceip.jdbc.support.QueryObject;
import mtn.gfkd.ceip.jdbc.support.QueryParam;
import mtn.gfkd.ceip.jdbc.support.QuerySqlParser;
import mtn.gfkd.ceip.jdbc.support.QueryWebParameter;
import mtn.gfkd.ceip.jdbc.support.QueryWebUtils;
import mtn.gfkd.ceip.model.TreeModel;
import mtn.gfkd.ceip.util.SqlUtil;
import mtn.gfkd.ceip.util.StringUtil;
/**
* 基于spring NamedParameterJdbcTemplate封装的jdbc操作
*
* 待补充的功能:TODO 1)、中间需要增加sql 函数的转换;日志、异常的处理 <br>
* 2)、另外结合实际需要直接给出xml数据格式
*
* @author 陈志平 chenzp
*
* @说明: web 应用基础平台
* @date Aug 1, 2006 4:57:47 PM
* @版权所有: All Right Reserved 2006-2008
*/
public class JdbcDAOImpl extends NamedParameterJdbcDaoSupport implements IJdbcDAO {
protected static Log log = LogFactory.getLog(JdbcDAOImpl.class);
public JdbcDAOImpl() {
}
public JdbcOperations getJdbcOperations() {
return getNamedParameterJdbcTemplate().getJdbcOperations();
}
/**
* 直接执行一条sql
*
* @param sql
*/
public void execute(String sql) {
Assert.hasText(sql, "sql must be not null");
getJdbcOperations().execute(sql);
}
/**
* 可直接运行的sql语句数组
*
* @param sql
* update ca_user set a ='newea' ,b=3 where c = 5
* @return
*/
public int[] batchUpdate(String[] sql) {
return getJdbcOperations().batchUpdate(sql);
}
/**
* 注意:这里的sql不支持 命名参数,只能用 ? 代替
*
* @param sql
* update ca_user set a =? ,b=? where c = ?
* @param dataSet
* List<String[]>
* @return
*/
public int[] batchUpdate(String sql, final List<String[]> dataSet) {
BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter() {
public int getBatchSize() {
return dataSet.size();
}
public void setValues(PreparedStatement psmt, int i) {
String[] obj = dataSet.get(i);
try {
for (int j = 0; j < obj.length; j++) {
psmt.setString(j + 1, obj[j]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
return getJdbcOperations().batchUpdate(sql, setter);
}
/**
* 更新sql语句的执行,没有参数的情况
*
* @param sql
* @return 受影响的行数
*/
public boolean update(String sql) {
Assert.hasText(sql, "sql must be not null");
return getJdbcOperations().update(sql) > 0;
}
/**
* 只有一个参数更新语句执行
*
* @param sql
* :更新语句
* @param paramMap
* :命名参数
* @return 受影响的行数
*/
public boolean update(String sql, String namedParam, Object value) {
Map<String, Object> paramMap = new HashMap<String, Object>(1);
paramMap.put(StringUtil.strnull(namedParam), value);
return update(sql, paramMap);
}
/**
* 更新语句执行
*
* @param sql
* :更新语句
* @param paramMap
* :命名参数
* @return 受影响的行数
*/
public boolean update(String sql, Map paramMap) {
// sql = DBSqlParse.parseSql(sql, paramMap);
getLogInfo(sql, paramMap);
return getNamedParameterJdbcTemplate().update(sql, new MapSqlParameterSource(paramMap)) > 0;
}
/**
* 单个参数的情况
*
* @param sql
* select count(*) from demo where a =: a and b =: b<br>
* select nid from demo where a =: a and b =: b ;其中nid 为数值型
* @param namedParam
* @param value
* @return 返回一个整数值
*/
public int queryForInt(String sql, String namedParam, Object value) {
Map<String, Object> paramMap = new HashMap<String, Object>(1);
paramMap.put(StringUtil.strnull(namedParam), value);
return queryForInt(sql, paramMap);
}
/**
* 查询单列(类型为整型),返回一个整数值<br>
* 多个参数的情况
*
* @param sql
* :select count(*) from demo where a =: a and b =: b<br>
* select nid from demo where a =: a and b =: b ;其中nid 为数值型
* @param paramMap
* 命名参数为key;参数值为value的Map
* @return 整数值
*/
public int queryForInt(String sql, Map paramMap) {
getLogInfo(sql, paramMap);
int i = -1;
try {
i = getNamedParameterJdbcTemplate().queryForInt(sql, new MapSqlParameterSource(paramMap));
} catch (EmptyResultDataAccessException ex) {
logger.error("忽略此类错误[EmptyResultDataAccessException],允许查询为空时,返回-1!");
}
return i;
}
/**
* 没有参数的情况,查询单列(类型为整型),返回一个整数值<br>
*
* @param sql
* :select count(*) from demo where a =: a and b =: b<br>
* select nid from demo where a =: a and b =: b ;其中nid 为数值型
* @return 整数值
*/
public int queryForInt(String sql) {
return queryForInt(sql, null);
}
/**
* 查询单列(类型为整型),返回一个长整数值<br>
* 单个参数的情况
*
* @param sql
* :select count(*) from demo where a =: a <br>
* select nid from demo where a =: a ;其中nid 为数值型
* @param namedParam
* 命名参数
* @param value
* 参数值
* @return
*/
public long queryForLong(String sql, String namedParam, Object value) {
Map<String, Object> paramMap = new HashMap<String, Object>(1);
paramMap.put(StringUtil.strnull(namedParam), value);
return queryForLong(sql, paramMap);
}
/**
* 查询单列(类型为整型),返回一个整数值<br>
*
* @param sql
* :select count(*) from demo where a =: a and b =: b <br>
* select nid from demo where a =: a and b =: b ;其中nid 为数值型
* @param paramMap
* 命名参数为key;参数值为value的Map
* @return 长整数值
*/
public long queryForLong(String sql, Map paramMap) {
getLogInfo(sql, paramMap);
long l = -1L;
try {
l = getNamedParameterJdbcTemplate().queryForLong(sql, new MapSqlParameterSource(paramMap));
} catch (EmptyResultDataAccessException ex) {
logger.error("忽略此类错误[EmptyResultDataAccessException],允许查询为空时,返回-1!");
}
return l;
}
/**
* 查询单列(类型为整型),返回一个整数值<br>
*
* @param sql
* :select count(*) from demo where a =: a and b =: b <br>
* select nid from demo where a =: a and b =: b ;其中nid 为数值型
* @return 长整数值
*/
public long queryForLong(String sql) {
return queryForLong(sql, null);
}
/**
* 只取一列的值
*
* @param sql
* :select cname from demo where a =: a and b =: b <br>
* @param paramMap
*
没有合适的资源?快使用搜索试试~ 我知道了~
PHP组件开发实例.rar
共479个文件
svn-base:198个
jar:51个
class:46个
3星 · 超过75%的资源 需积分: 15 19 下载量 161 浏览量
2009-07-15
10:37:29
上传
评论
收藏 23.51MB RAR 举报
温馨提示
PHP组件开发实例.rarPHP组件开发实例.rarPHP组件开发实例.rarPHP组件开发实例.rarPHP组件开发实例.rarPHP组件开发实例.rarPHP组件开发实例.rarPHP组件开发实例.rarPHP组件开发实例.rarPHP组件开发实例.rarPHP组件开发实例.rarPHP组件开发实例.rarv
资源推荐
资源详情
资源评论
收起资源包目录
PHP组件开发实例.rar (479个子文件)
all-wcprops 8KB
all-wcprops 1KB
all-wcprops 1KB
all-wcprops 1KB
all-wcprops 1KB
all-wcprops 912B
all-wcprops 905B
all-wcprops 860B
all-wcprops 820B
all-wcprops 812B
all-wcprops 644B
all-wcprops 616B
all-wcprops 582B
all-wcprops 554B
all-wcprops 496B
all-wcprops 456B
all-wcprops 448B
all-wcprops 418B
all-wcprops 403B
all-wcprops 396B
all-wcprops 389B
all-wcprops 351B
all-wcprops 285B
all-wcprops 274B
all-wcprops 266B
all-wcprops 250B
all-wcprops 248B
all-wcprops 248B
all-wcprops 226B
all-wcprops 127B
all-wcprops 119B
all-wcprops 112B
all-wcprops 107B
all-wcprops 106B
all-wcprops 106B
all-wcprops 102B
all-wcprops 101B
all-wcprops 100B
all-wcprops 98B
all-wcprops 96B
all-wcprops 95B
all-wcprops 92B
all-wcprops 90B
JdbcDAOImpl.class 37KB
StringUtil.class 21KB
DateUtil.class 17KB
QueryWebUtils.class 16KB
QuerySqlParser.class 15KB
NumericUtil.class 13KB
QueryParam.class 12KB
SqlUtil.class 10KB
UtilXml.class 8KB
BaseHibernateDao.class 8KB
JsonTreeSupport.class 6KB
IJdbcDAO.class 6KB
PersonsHandler.class 5KB
PersonSearch.class 4KB
PageHibernateDao.class 4KB
JsonUtil.class 3KB
QueryObject.class 3KB
QueryWebParameter.class 3KB
ConfigurationHandler.class 3KB
Page.class 3KB
CeipPortletModeParameterHandlerMapping.class 2KB
PersonEditHandler.class 2KB
ObjectRowMapper.class 2KB
TreeModel.class 2KB
PersonServiceImpl.class 2KB
Person.class 2KB
PersonViewHandler.class 2KB
PersonDeleteHandler.class 2KB
CeipPortletModeParameterHandlerMapping$LookupKey.class 2KB
PersonComparator.class 2KB
PersonDisplayTerms.class 1KB
JdbcDAOImpl$1.class 1KB
PersonValidator.class 1KB
Constants.class 1KB
JdbcDAOImpl$2.class 1KB
JdbcDAOImpl$5.class 952B
PersonComparatorUtil.class 945B
PersonDao.class 934B
BaseServiceImpl.class 934B
JdbcDAOImpl$3.class 919B
JdbcDAOImpl$4.class 914B
TreeDAO.class 894B
PersonService.class 577B
PersonSearchTerms.class 451B
BaseModel.class 384B
BaseService.class 226B
.classpath 6KB
org.eclipse.wst.jsdt.ui.superType.container 49B
entries 8KB
entries 1KB
entries 1KB
entries 1KB
entries 1KB
entries 997B
entries 991B
entries 989B
entries 976B
共 479 条
- 1
- 2
- 3
- 4
- 5
资源评论
- whappy8804162014-12-09这怎么用?里面怎么没有说明文档
jone33
- 粉丝: 80
- 资源: 469
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功