最近学习了如何配置在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 -->
好了,写到这里,该结束了。
分享到:
相关推荐
spring mvc jdbc 连接数据库配置说明
在本文中,我们将详细介绍如何使用 Spring Boot 连接 Oracle 数据库,配置 JDBC 驱动程序,并实现数据库的基本操作。 Step 1: 添加依赖项 在 Spring Boot 项目中,需要在 `build.gradle` 文件中添加 Oracle JDBC ...
通过上述方法,我们可以确保Spring JDBC在连接数据库时使用的配置信息得到充分保护,从而提高应用的安全性。在开发过程中,结合源码理解和使用适当的工具,可以更有效地实现这一目标。对于更深入的学习,可以参考...
在"jdbc连接数据库事务工厂模式"中,我们主要关注三个方面:JDBC、事务管理和工厂模式。 首先,JDBC提供了与数据库交互的基本步骤,包括加载驱动、建立连接、执行SQL语句和关闭连接。例如,使用`Class.forName()`...
这里要求的使用Eclipse作为编辑器(JavaEE开发版),JDK采用版本为1.7.*,maven版本为3.3.*,tomcat版本为7.0.*,mysql版本为5.7.17版本,其余spring、springmvc、mybatis册版本参照imooc网中“秒杀系统”中的版本...
为了在SpringCloud服务中使用这个数据库连接,你可能还需要配置Ribbon或Feign客户端,以在微服务间进行数据交互。Ribbon是客户端负载均衡器,Feign是一个声明式HTTP客户端。配置它们可以使你的服务通过服务名而不是...
**JDBC通过配置文件连接数据库** Java Database Connectivity (JDBC) 是Java编程语言与各种数据库进行交互的标准API。它允许Java应用程序执行SQL语句并处理返回的结果。在实际开发中,我们经常需要通过配置文件来...
综上所述,解决JDBC连接Oracle远程数据库时的中文乱码问题,需要从多个层面进行检查和配置,包括应用程序的配置文件、JDBC连接参数、数据库服务器设置以及开发环境等。通过细心排查和合理配置,可以有效地避免这类...
描述中的“jdbc连接数据库使用的jar包,兼容下载即可使用,欢迎下载”意味着这个JAR文件是为JDBC准备的,它可以被Java开发者下载并集成到他们的项目中,以便连接到数据库。它强调了兼容性,这意味着该JAR包已经过...
在这个配置中,`jceDecryptor`是我们自定义的解密器,`algorithm`指定了加密算法,`password`是解密密钥。`propertyConfigurer`则告诉Spring使用解密器来处理配置文件中的加密属性。 最后,关于`junfeng`这个文件,...
它预先创建并维护一定数量的数据库连接,当应用程序需要连接数据库时,可以从连接池中获取一个已经建立好的连接,用完后归还而不是关闭,从而避免了频繁的创建和关闭连接带来的性能开销和资源浪费。 **JDBC连接池...
在这个项目中,我们将使用 Spring 的 JDBC 模块来连接数据库。 配置 Spring 在 Spring 项目中,我们需要配置 Spring 的配置文件,名为 myspring.xml。这是一个基于 XML 的配置文件,用于定义 Spring 的Bean对象。...
Spring Data JDBC与JDBC是两种不同的数据库访问方式,它们在Java开发中有着广泛的应用。JDBC(Java Database Connectivity)是Java平台的标准API,用于与各种数据库进行交互。它提供了低级别的数据库操作,如建立...
通过本文的介绍,读者应该能够了解如何在Spring框架中使用JDBC、JPA、Hibernate等技术配置数据库连接,以及如何利用Spring Boot的自动配置功能简化配置过程。合理的数据库连接配置不仅可以提高应用的性能,还可以...
在Spring配置中启用事务管理器,并在需要事务的方法上添加`@Transactional`注解,Spring会自动进行事务的开始、提交或回滚。例如: ```xml <bean id="transactionManager" class="org.springframework.jdbc....
在Spring Boot应用中,你可以通过`@Autowired`注解注入数据源,然后使用`DataSource`提供的`getConnection()`方法获取数据库连接,如下所示: ```java import org.springframework.beans.factory.annotation....
在本项目中,我们主要利用Spring框架,包括其核心模块Spring、MVC模块Spring MVC以及数据访问/集成模块Spring JDBC,结合MySQL数据库来构建一个基础的登录注册系统。以下是这个项目涉及的关键技术点: 1. **Spring...