`
javeye
  • 浏览: 329163 次
  • 性别: 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配置步骤

    连接的是oracle 11g,配置成功,查询,更新,都测试成功了

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

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

    初学SpringCloud连接Oracle数据库

    初学SpringCloud简单配置Oracle数据库,从Oracle数据库中获取数据

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

    jdbc数据库连接池,方便连接数据库,优化数据库连接速度。

    Spring 数据库连接池(JDBC)详解

    本篇文章主要介绍了基于Spring的JDBC基本框架搭建;基于Spring的JDBC增删改查;读取配置文件中的数据等,具有很好的参考价值。下面跟着小编一起来看下吧

    R2,jdbc数据库连接池源码

    jdbc数据库连接池R2的源代码。R2通过代理connection对象和工厂模式实现了不改变原jdbc调用方式的前提下的jdbc数据库连接池。结构简单,功能完善,高可配置,充分应用了jdk1.6的同步包特性,提高了并发效率,并能够...

    vertica数据库的连接jar包

    就可以连接数据库 import java.sql.*; import java.util.Properties; Properties myProp = new Properties(); //用于设置数据库的用户名 myProp.put("user", "dbadmin"); //用于设置数据库的密码 myProp.put...

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

    NULL 博文链接:https://kingxss.iteye.com/blog/1479451

    JDBC_Spring.zip_spring jdbc

    Spring配置JDBC,从而操作数据库,这里操作的数据库是MySQL,通过xml配置文件中配置数据源连接,实现数据库的操作

    JAVA Spring boot JDBC同步不同服务器oracle数据库

    通过Spring boot框架 用jdbc的方式连接两个不同服务器的oracle数据库,自己在properties配置数据库名称密码和地址,然后直接调用就可以运行

    Spring 3.0MVC JDBC 单表操作示例.rar

    eclipse 直接导出的项目 Spring MVC 的一个DEMO jiaolongzhi作品 采用 Spring 3.0 MVC 框架 JSTL+EL 语句输出界面 ...一种是 Spring 封装的JDBC和 操作 (teacher表) 一种是 proxool 提供的方式(student表)

    axon-dbconfig-demo:演示应用程序显示了Axon的一些不同数据库配置,并运行了一个小测试

    该演示应用程序显示了Axon的一些不同数据库配置,并运行了一个小测试。 有4个可用的spring配置文件(请参阅application.properties)-必须启用其中一个才能运行。 “ config”包中的各个配置类与配置文件相对应,...

    springjdbc

    -- 数据库配置 --&gt; &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p=...

    SpringBoot在yml配置文件中配置druid的操作

    最新版的druid和旧版在filter配置方面有些不同,以下是旧版druid中配置filter: spring: ##数据库连接信息 datasource: url: jdbc:mysql://localhost:3306/young username: root password: root driver-class...

    spring-config-jdbc:Spring JDBC 占位符配置器

    Spring JDBC 占位符配置器 这个实现使用 JDBC 数据源和 SQL 语句解析占位符。 大部分测试代码取自。...将占位符添加到您的弹簧配置中 &lt; property name = " selectStatement " value = " SELECT

    nacos-server-2.1.1 适配达梦数据库

    支持多数据源配置,默认连接mysql。如果需要连接oracle、dm8 等,需要更改配置文件 打开\nacos\conf\application.properties,修改如下: spring.datasource.platform=mysql ### Count of DB: db.num=1 db....

    spring boot整合mybatis连接不上数据库

    Cause: org.springframework.jdbc....spring boot中使用mybatis连接mysql数据库时报如上错误,确认配置文件中的密码没问题,但是一直报错,最后在密码上加双引号解决 ———————————————— 版权声明

    详解Spring Hibernate连接oracle数据库的配置

    详解Spring Hibernate连接oracle数据库的配置 jdbc.properties文件配置如下  driverClassName=oracle.jdbc.driver.OracleDriver url=jdbc\:oracle\:thin\:@localhost\:1521\: database=OA username=oa password=...

    spring-jdbc

    Spring的JDBC模板的使用 1、Spring的JDBC的模板 2、将连接池和模板交给Spring管理 3、使用开源的数据库连接池 4、抽取配置到属性文件 5、使用JDBC的模板完成CRUD的操作

Global site tag (gtag.js) - Google Analytics