`

使用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);
}

 

分享到:
评论

相关推荐

    使用Spring JDBC 案例

    在本文中,我们将深入探讨如何使用Spring JDBC进行数据库操作,并结合使用不同的连接池技术,包括Spring自带的、C3P0、DBCP和Druid。此外,我们还将介绍一个自定义的行映射器工具类,它在处理数据库查询结果时能提供...

    spring-boot-jdbc-templates:使用Spring JDBC模板演示Spring Boot的示例

    在这个名为"spring-boot-jdbc-templates"的项目中,我们将探讨如何在Spring Boot应用中使用Spring JDBC模板来连接和操作MySQL数据库。 首先,让我们了解Spring Boot如何配置数据源。在Spring Boot应用中,只需要在`...

    SpringJDBC.rar_jdbc spring_spring jd_spring jdbc_spring使用JDBC进行数

    这个“SpringJDBC.rar”压缩包文件可能包含了关于如何在Spring框架中集成和使用JDBC的相关示例和教程。下面将详细解释Spring JDBC的核心概念、功能以及使用方法。 首先,Spring JDBC的核心目标是简化传统的JDBC编程...

    springjdbc.zip_SpringJDBC_spring jdbc_spring 增删改查_springjdbc xml

    这个`springjdbc.zip`压缩包很可能包含了示例代码和配置文件,用于演示如何使用Spring JDBC来执行基本的数据库操作,如增、删、改、查。 1. **Spring JDBC模块**:Spring JDBC模块主要由`org.springframework.jdbc`...

    Spring JDBC常用Jar包

    包含这个文件意味着你可以使用Spring JDBC来连接并操作MySQL数据库。 2. **spring-tx-3.2.3.RELEASE.jar**: Spring的事务管理模块,提供了编程式和声明式事务管理支持。在Spring JDBC中,事务管理是关键功能,它...

    Spring mvc + Spring + Spring jdbc 整合 demo.rar

    4. 数据访问对象(DAO):负责与数据库的交互,使用Spring JDBC模板执行SQL查询和更新操作。 5. 模型(Model):数据对象,用于在服务层和视图层之间传递数据。 6. 视图:可能包含JSP页面或其他模板技术,用于展示...

    SpringJDBC.rar_SpringJDBC_spring jdbc

    通过这个SpringJDBC.rar的案例,初学者可以学习到如何配置DataSource,如何创建JdbcTemplate实例,以及如何编写和执行SQL语句。同时,实践中还可以了解到如何将Spring JDBC整合到Spring Boot项目中,以及如何处理...

    spring jdbc.zip

    Spring JDBC不仅包含了JDBC的基本功能,如数据源配置、事务管理,还引入了模板模式,即JdbcTemplate,进一步降低了数据库操作的复杂性。 JdbcTemplate是Spring JDBC的核心类,它是对JDBC的简单而强大的封装。它提供...

    spring jdbc示例代码

    本示例代码将展示如何在Spring环境中使用JDBC进行数据的增删改查操作,并对比它与原生JDBC以及ORM(Object-Relational Mapping)框架如Hibernate或MyBatis的差异。 首先,让我们深入理解Spring JDBC的核心概念: 1...

    最简单的用户登录与注册系统 spring mvc spring jdbc

    2. **Spring JDBC**:Spring JDBC抽象了JDBC,提供了一个模板类JdbcTemplate,用于执行SQL查询和更新。理解如何配置DataSource,以及如何使用JdbcTemplate进行增删改查操作是关键。 3. **用户登录**:登录功能通常...

    Spring_jdbc模板相关jar包(连接文件版本:5.1.47)

    本资源“Spring_jdbc模板相关jar包(连接文件版本:5.1.47)”包含了Spring JDBC的核心库,以及适用于MySQL数据库的特定连接器——mysql-connector-java-5.1.47-bin.jar。下面我们将深入探讨这些组件及其重要性。 ...

    spring对jdbc的支持jar包

    1. **JdbcTemplate**:这是Spring JDBC的基础组件,它通过模板方法模式封装了常见的JDBC操作,如执行SQL查询、更新、存储过程等。使用JdbcTemplate,开发者无需手动管理数据库连接、预编译语句、结果集转换等细节,...

    spring-jdbc jar包.rar

    1. **JdbcTemplate**:这是Spring JDBC的核心类,它通过模板方法模式将常见的JDBC操作进行了封装,如执行SQL查询、更新、调用存储过程等。开发者只需要关注SQL语句和参数,而无需处理连接创建、关闭、异常处理等繁琐...

    Spring JDBC模板类—org.springframework.jdbc.core.JdbcTemplate

    Spring JDBC模板类——`org.springframework.jdbc.core.JdbcTemplate`是Spring框架中的核心组件,它为Java开发者提供了一种方便、安全的方式来执行SQL语句,而无需直接管理数据库连接。`JdbcTemplate`通过抽象出低...

    spring jdbc相关包版本5.1.3

    4. **spring-jdbc-5.1.3.RELEASE.jar**:此包专注于数据库操作,提供了模板类如`JdbcTemplate`和`SimpleJdbcInsert`,使得数据库操作更加简洁,避免了手动管理连接和结果集。 5. **spring-aop-5.1.3.RELEASE.jar**...

    SpringJDBC训练素材.zip

    使用JdbcTemplate,你可以避免编写大量重复的JDBC模板代码,如关闭连接、处理结果集等。例如,一个简单的查询操作可以通过传递SQL语句和RowMapper实现: ```java String sql = "SELECT * FROM users WHERE id = ?";...

    Spring_jdbc模板相关jar包

    这个"Spring_jdbc模板相关jar包"包含了Spring框架中用于与关系型数据库交互的核心库,使得开发者无需直接使用JDBC API,而是通过更高级、更抽象的API来完成数据访问。 首先,Spring JDBC模块包含了一个名为`...

    spring JDbc

    在本实例中,我们将深入探讨Spring JDBC的使用,并以`SpringJdbcTemplate`为例来阐述其主要功能和优势。 首先,Spring JDBC通过`JdbcTemplate`和`NamedParameterJdbcTemplate`类提供了强大的数据库访问功能。`...

    Spring JDBC应用实例讲解

    JdbcTemplate是Spring JDBC的基础,它提供了模板方法来处理常见的JDBC任务,如执行SQL查询、更新、存储过程等。使用JdbcTemplate可以避免手动管理连接、预编译语句、结果集处理等繁琐工作,从而降低出错的可能性。 ...

    Spring Jdbc的jar包

    `JdbcTemplate`是Spring JDBC的核心,它提供了一种模板方法模式来执行常见的JDBC操作,如查询、更新、插入和删除。通过使用`JdbcTemplate`,开发者可以避免编写大量重复的JDBC代码,如打开和关闭连接,以及处理异常...

Global site tag (gtag.js) - Google Analytics