<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!--缓存定义部分 start--> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation"> <value>classpath:/ehcache.xml</value> </property> </bean> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>WEB-INF/config/platform/properties/oracle_jdbc.properties</value> <value>WEB-INF/config/platform/properties/hibernate.properties</value> <value>classpath:eipdb-dy.properties</value> </list> </property> </bean> <!-- WebSphere JNDI DataSource for J2EE environments <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>java:comp/env/jdbc/hbgynk</value> </property> </bean> --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <property name="maxActive" value="100"/> <property name="maxIdle" value="30"/> <property name="maxWait" value="1000"/> <property name="defaultAutoCommit" value="true"/> <property name="removeAbandoned" value="true"/> <property name="removeAbandonedTimeout" value="60"/> </bean> <!--spring 的JDBC模板--> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref bean="dataSource"/> </property> </bean> <bean id="baseJdbcDao" class="com.miracle.dm.framework.dao.jdbc.BaseJdbcDaoSupport"> <property name="jdbcTemplate" ref="jdbcTemplate"/> </bean> </beans>
package com.miracle.dm.framework.dao.jdbc; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import javax.sql.DataSource; import org.apache.log4j.Logger; import org.springframework.jdbc.core.PreparedStatementSetter; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.support.JdbcDaoSupport; import org.springframework.jdbc.object.MappingSqlQuery; import com.miracle.dm.framework.dao.BaseJdbcDao; import com.miracle.dm.util.PaginationSupport; public class BaseJdbcDaoSupport extends JdbcDaoSupport implements BaseJdbcDao { protected static final Logger logger = Logger.getLogger(BaseJdbcDaoSupport.class); public BaseJdbcDaoSupport() { } public BaseJdbcDaoSupport(DataSource ds) { this.setDataSource(ds); } private class CustomerRowMapper implements RowMapper { public Object mapRow(ResultSet arg0, int arg1) throws SQLException { ResultSetMetaData rsMetaData = arg0.getMetaData(); String columnName; HashMap result = new HashMap(); for (int i = 1; i <= rsMetaData.getColumnCount(); i++) { columnName = rsMetaData.getColumnName(i).toLowerCase(); result.put(columnName, arg0.getObject(i)); } return result; } } private class CustomerMappingSqlQuery extends MappingSqlQuery { protected Object mapRow(ResultSet arg0, int arg1) throws SQLException { ResultSetMetaData rsMetaData = arg0.getMetaData(); String columnName; HashMap result = new HashMap(); for (int i = 1; i <=rsMetaData.getColumnCount(); i++) { columnName = rsMetaData.getColumnName(i); result.put(columnName, arg0.getObject(i)); } return result; } } /** * @param sql SQL语句 * @return 查询一个对象列表结果 */ public List queryForList(String sql){ return this.getJdbcTemplate().queryForList(sql); } /** * @param sql SQL语句 * @param args 参数中的值 * @return 查询一个对象列表结果 */ public List queryForList(String sql, Object[] args){ CustomerRowMapper rowMapper=new CustomerRowMapper(); return this.getJdbcTemplate().query(sql, args, rowMapper); } /** * @param sql SQL语句 * @return 查询一个整型结果 */ public int queryForInt(String sql){ return queryForInt(sql, null); } /** * @param sql SQL语句 * @param args 参数中的值 * @return 查询一个整型结果 */ public int queryForInt(String sql, Object[] args){ return getJdbcTemplate().queryForInt(sql,args); } /** * @param sql SQL语句 * @return 返回一个对象 */ public Object queryForObject(String sql){ return this.getJdbcTemplate().queryForObject(sql, Object.class); } /** * @param sql SQL语句 * @param args 参数中的值 * @return 返回一个对象 */ public Object queryForObject(String sql, Object args[]){ return this.getJdbcTemplate().queryForObject(sql,args, Object.class); } /** * @param sql SQL语句 * @param args 参数中的值 * @param pageSize 每页的数量 * @param startIndex 开始数 * @return 获取分页数据 */ public PaginationSupport getPage(String sql, int pageSize,int startIndex){ return this.getPage(sql,(Object[])null,pageSize,startIndex); } /** * @param sql SQL语句 * @param args 参数中的值 * @param pageSize 每页的数量 * @param startIndex 开始数 * @return 获取分页数据 */ @SuppressWarnings("unchecked") public PaginationSupport getPage(String sql, Object args[], final int pageSize,final int startIndex){ String countSQL="select count(*) from ("+sql+") xCount"; int count=this.queryForInt(countSQL); int endIndex=startIndex+pageSize; String querySql="select * from ("+sql+") as t where t.rownum>"+startIndex+" and rownum<="+endIndex; List list=this.queryForList(querySql, args); PaginationSupport paginationSupport=new PaginationSupport(list,count,pageSize,startIndex); return paginationSupport; } /** * @param sql SQL语句 * @return 更新的记录数 */ public int update(String sql){ return this.update(sql, (Object[])null); } /** * @param sql SQL语句 * @param args 参数中的值 * @return 更新的记录数 */ public int update(String sql, Object[] args){ return this.getJdbcTemplate().update(sql, args); } /** * @param sql SQL语句 * @param pss PreparedStatement的参数设置器 * @return 更新的记录数 */ public int update(String sql, PreparedStatementSetter pss){ return this.getJdbcTemplate().update(sql, pss); } /** * @param sql SQL语句 * @param args 参数中的值 * @return 更新的记录数 */ public int[] update(String[] sql){ return this.getJdbcTemplate().batchUpdate(sql); } }
package com.miracle.dm.framework.dao; import java.util.List; import org.springframework.jdbc.core.PreparedStatementSetter; import com.miracle.dm.util.PaginationSupport; /** * @author dengzhifeng * @Description:JDBC数据处理 * */ public interface BaseJdbcDao { /** * @param sql SQL语句 * @return 查询一个对象列表结果 */ public List queryForList(String sql); /** * @param sql SQL语句 * @param args 参数中的值 * @return 查询一个对象列表结果 */ public List queryForList(String sql, Object[] args); /** * @param sql SQL语句 * @return 查询一个整型结果 */ public int queryForInt(String sql); /** * @param sql SQL语句 * @param args 参数中的值 * @return 查询一个整型结果 */ public int queryForInt(String sql, Object[] args); /** * @param sql SQL语句 * @return 返回一个对象 */ public Object queryForObject(String sql); /** * @param sql SQL语句 * @param args 参数中的值 * @return 返回一个对象 */ public Object queryForObject(String sql, Object args[]); /** * @param sql SQL语句 * @param pageSize 每页的数量 * @param startIndex 开始数 * @return 获取分页数据 */ public PaginationSupport getPage(String sql, int pageSize,int startIndex); /** * @param sql SQL语句 * @param args 参数中的值 * @param pageSize 每页的数量 * @param startIndex 开始数 * @return 获取分页数据 */ public PaginationSupport getPage(String sql, Object args[], int pageSize,int startIndex); /** * @param sql SQL语句 * @return 更新的记录数 */ public int update(String sql); /** * @param sql SQL语句 * @param args 参数中的值 * @return 更新的记录数 */ public int update(String sql, Object[] args); /** * @param sql SQL语句 * @param pss PreparedStatement的参数设置器 * @return 更新的记录数 */ public int update(String sql, PreparedStatementSetter pss); /** * @param sql SQL语句 * @return 批量更新的记录数 */ public int[] update(String[] sql); }