`

使用spring的jdbc模板

    博客分类:
  • ssh2
 
阅读更多
<?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);
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics