`
javeye
  • 浏览: 331116 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring中使用纯JDBC连接数据库的配置

阅读更多
最近学习了如何配置在spring中使用单纯的jdbc连接数据库(不用hibernate等持久层框架),记录了一下几个关键的地方,备自己和有需之人查阅。
首先,在spring 的applicationContext配置文件中,需要配置数据源:
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath*:jdbc.properties</value>
			</list>
		</property>
	</bean>
	<!-- dbcp pool config -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="maxIdle" value="${jdbc.maxIdle}"></property>
		<property name="maxActive" value="${jdbc.maxActive}"></property>
		<property name="maxWait" value="${jdbc.maxWait}"></property>
		<property name="minIdle" value="${jdbc.minIdle}"></property>

		<property name="driverClassName"
			value="${jdbc.driverClassName}">
		</property>
		<property name="url" value="${jdbc.url}"></property>

		<property name="username" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
	</bean>

我想上面的东西不用解释了吧,用的是dbcp的连接池。

然后,spring提供了一个JDBC的DaoSupport可供我们使用,就像集成hibernate时提供的hibernate的DaoSupport一样。这里叫JdbcDaoSupport。假设我们有个叫我们像如下的方式使用:
public class ImplBaseDao extends JdbcDaoSupport implements BaseDao {

	public List get(String ID) {
		return null;
	}

}

因为完全是一个Demo,所以BaseDao这个接口里面只有一个名为get的方法。
public interface BaseDao {
	public List get(String ID);
}

然后,具体的业务dao都可以继承自ImplBaseDao
public class PassengerInfoDao extends ImplBaseDao {

	public List<PassengerInfo> list = new ArrayList<PassengerInfo>();

	@SuppressWarnings("unchecked")
	public List<PassengerInfo> getPassengerInfo(String id) {
		String sql = "select * from passengerinfo where id="+id;
		return (List<PassengerInfo>) this.getJdbcTemplate().query(sql,
				new PassengerInfoMapper());

	}
}

我惊叹spring的地方在于,对于
this.getJdbcTemplate().query(sql,new PassengerInfoMapper());
这句话中,第二个参数new PassengerInfoMapper()来自于spring提供一个接口的实现:
import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.jdbc.core.RowMapper;

import com.travelsky.web.pojo.PassengerInfo;

public class PassengerInfoMapper implements RowMapper {

	public Object mapRow(ResultSet rs, int index) throws SQLException {
		PassengerInfo passengerInfo = new PassengerInfo();
		passengerInfo.setId(rs.getInt("id"));
		passengerInfo.setPaName(rs.getString("paName"));
		return passengerInfo;
	}

}

可以看见,通过这样的方式,实现了bean与rs的一个转换,虽然很原始,但是这样做比我们完全靠自己去写还是要方便很多。
好了,说说spring集成jdbc的事务和配置和对dao的托管。
在applicationContext中
	<!-- 事务管理 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
	</bean>

	<bean id="transactionInterceptor"
		class="org.springframework.transaction.interceptor.TransactionInterceptor">
		<property name="transactionManager" ref="transactionManager" />
		<property name="transactionAttributes">
			<props>
				<!-- 定义规则 -->
				<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>

	<bean id="transactionProxyCreator"
		class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames">
			<value>*Service</value>
		</property>
		<property name="interceptorNames">
			<list>
				<value>transactionInterceptor</value>
				<!--      
					此处增加新的Interceptor     
				-->
			</list>
		</property>
	</bean>

	<bean
		class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
		<property name="transactionInterceptor"
			ref="transactionInterceptor" />
	</bean>

以上是对事务的配置,大同小异,不明白的可以参照相关spring事务配置说明的文档。
接下来是对dao service action等我们常见类型bean的托管。
其实很简单了,不写大家都会。
	<!-- project实例配置 start -->
	<bean id="baseDao" class="com.travelsky.web.core.dao.ImplBaseDao">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
	</bean>
	<bean id="JdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
	<property name="dataSource">
	<ref bean="dataSource"/>
	</property>
	</bean>
	<!-- 将所有的dao按顺序配置在这个地方 -->
	<bean id="passengerInfoDao"
		class="com.travelsky.web.dao.PassengerInfoDao">
		<property name="dataSource">
		<ref bean="dataSource"/>
		</property>
		<!-- 给其直接配置dataSource或者配置jdbcTemplate都可以实现与数据源的引用-->
                  <!--
		<property name="jdbcTemplate">
		<ref bean="JdbcTemplate"/>
		</property>
		 -->
	</bean>
	<!-- 将所有的service按顺序配置在这个地方 -->
	<bean id="passengerInfoService"
		class="com.travelsky.web.service.PassengerInfoService">
		<property name="passengerInfoDao">
			<ref bean="passengerInfoDao" />
		</property>
	</bean>

	<!-- 将所有的action配置在这个地方 -->
	<bean name="/painfo"
		class="com.travelsky.web.web.PassengerInfoAction">
		<property name="passengerInfoService">
			<ref bean="passengerInfoService" />
		</property>
	</bean>
	<!-- project实例配置 end -->

好了,写到这里,该结束了。
分享到:
评论
1 楼 124333675 2014-09-26  
挺好 !!! 

相关推荐

    spring mvc jdbc 连接数据库配置说明

    spring mvc jdbc 连接数据库配置说明

    Spring boot连接oracle数据库JDBC配置步骤

    在本文中,我们将详细介绍如何使用 Spring Boot 连接 Oracle 数据库,配置 JDBC 驱动程序,并实现数据库的基本操作。 Step 1: 添加依赖项 在 Spring Boot 项目中,需要在 `build.gradle` 文件中添加 Oracle JDBC ...

    spring-jdbc文件数据库配置加密

    通过上述方法,我们可以确保Spring JDBC在连接数据库时使用的配置信息得到充分保护,从而提高应用的安全性。在开发过程中,结合源码理解和使用适当的工具,可以更有效地实现这一目标。对于更深入的学习,可以参考...

    jdbc连接数据库事务工厂模式

    在"jdbc连接数据库事务工厂模式"中,我们主要关注三个方面:JDBC、事务管理和工厂模式。 首先,JDBC提供了与数据库交互的基本步骤,包括加载驱动、建立连接、执行SQL语句和关闭连接。例如,使用`Class.forName()`...

    基于mvc,使用jdbc连接数据库的注册登录

    这里要求的使用Eclipse作为编辑器(JavaEE开发版),JDK采用版本为1.7.*,maven版本为3.3.*,tomcat版本为7.0.*,mysql版本为5.7.17版本,其余spring、springmvc、mybatis册版本参照imooc网中“秒杀系统”中的版本...

    初学SpringCloud连接Oracle数据库

    为了在SpringCloud服务中使用这个数据库连接,你可能还需要配置Ribbon或Feign客户端,以在微服务间进行数据交互。Ribbon是客户端负载均衡器,Feign是一个声明式HTTP客户端。配置它们可以使你的服务通过服务名而不是...

    JDBC通过配置文件连接数据库

    **JDBC通过配置文件连接数据库** Java Database Connectivity (JDBC) 是Java编程语言与各种数据库进行交互的标准API。它允许Java应用程序执行SQL语句并处理返回的结果。在实际开发中,我们经常需要通过配置文件来...

    Jdbc连接oracle远程数据库中文乱码解决

    综上所述,解决JDBC连接Oracle远程数据库时的中文乱码问题,需要从多个层面进行检查和配置,包括应用程序的配置文件、JDBC连接参数、数据库服务器设置以及开发环境等。通过细心排查和合理配置,可以有效地避免这类...

    jdbc连接数据库的jar

    描述中的“jdbc连接数据库使用的jar包,兼容下载即可使用,欢迎下载”意味着这个JAR文件是为JDBC准备的,它可以被Java开发者下载并集成到他们的项目中,以便连接到数据库。它强调了兼容性,这意味着该JAR包已经过...

    Spring数据库连接等配置加密

    在这个配置中,`jceDecryptor`是我们自定义的解密器,`algorithm`指定了加密算法,`password`是解密密钥。`propertyConfigurer`则告诉Spring使用解密器来处理配置文件中的加密属性。 最后,关于`junfeng`这个文件,...

    jdbc连接池配置(优化连接速度)

    它预先创建并维护一定数量的数据库连接,当应用程序需要连接数据库时,可以从连接池中获取一个已经建立好的连接,用完后归还而不是关闭,从而避免了频繁的创建和关闭连接带来的性能开销和资源浪费。 **JDBC连接池...

    spring连接数据库代码

    在这个项目中,我们将使用 Spring 的 JDBC 模块来连接数据库。 配置 Spring 在 Spring 项目中,我们需要配置 Spring 的配置文件,名为 myspring.xml。这是一个基于 XML 的配置文件,用于定义 Spring 的Bean对象。...

    Spring Data JDBC与JDBC的区别

    Spring Data JDBC与JDBC是两种不同的数据库访问方式,它们在Java开发中有着广泛的应用。JDBC(Java Database Connectivity)是Java平台的标准API,用于与各种数据库进行交互。它提供了低级别的数据库操作,如建立...

    Spring框架数据库连接配置全指南

    通过本文的介绍,读者应该能够了解如何在Spring框架中使用JDBC、JPA、Hibernate等技术配置数据库连接,以及如何利用Spring Boot的自动配置功能简化配置过程。合理的数据库连接配置不仅可以提高应用的性能,还可以...

    spring连接数据库实例

    在Spring配置中启用事务管理器,并在需要事务的方法上添加`@Transactional`注解,Spring会自动进行事务的开始、提交或回滚。例如: ```xml &lt;bean id="transactionManager" class="org.springframework.jdbc....

    JDBC数据源连接池的配置和使用示例

    在Spring Boot应用中,你可以通过`@Autowired`注解注入数据源,然后使用`DataSource`提供的`getConnection()`方法获取数据库连接,如下所示: ```java import org.springframework.beans.factory.annotation....

    Spring+Spring MVC+Spring JDBC+MySql实现简单登录注册

    在本项目中,我们主要利用Spring框架,包括其核心模块Spring、MVC模块Spring MVC以及数据访问/集成模块Spring JDBC,结合MySQL数据库来构建一个基础的登录注册系统。以下是这个项目涉及的关键技术点: 1. **Spring...

Global site tag (gtag.js) - Google Analytics