【框架整合】二、Spring数据源配置及JdbcTemplate配置
2017-06-17 14:29
447 查看
一、导入必需包
c3p0-0.9.1.2.jarcommons-dbcp-1.4.jar
commons-pool-1.6.jar
mysql-connector-java-5.1.24.jar
二、 建立jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mytestsql
jdbc.username=root
jdbc.password=xiazhang
jdbc.initialPoolSize=1
jdbc.minPoolSize=1
jdbc.maxPoolSize=10
jdbc.autoCommitOnClose=false
jdbc.breakAfterAcquireFailure=false
jdbc.testConnectionOnCheckout=false
jdbc.testConnectionOnCheckin=false
jdbc.idleConnectionTestPeriod=60
jdbc.acquireRetryAttempts=10
jdbc.acquireRetryDelay=1000
后面会详解每个配置参数的意义
三、 配置datasource
这里我们使用springContext-datasouce.xml 专门用于数据源配置文件只需在applicationContext.xml导入此文件就行 <!-- 数据源配置文件 --><import resource="classpath:applicationContext-datasource.xml"/>
<!-- 引入本地配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
这里还要引入dbc.properties文件,当然这个文件在springContext-datasouce.xml文件中引入也可以
不过习惯统一放在applicationContext.xml 进行统一管理
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd" default-lazy-init="true">
<!-- ========================= RESOURCE DEFINITIONS ========================= -->
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}" />
<!-- 基本属性 url、user、password -->
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialPoolSize" value="${jdbc.initialPoolSize}" />
<property name="minPoolSize" value="${jdbc.minPoolSize}" />
<property name="ma
4000
xPoolSize" value="${jdbc.maxPoolSize}" />
<!-- 连接池在回收数据库连接时是否自动提交事务。如果为false,则会回滚未提交的事务,如果为true,则会自动提交事务。default : false -->
<property name="autoCommitOnClose" value="${jdbc.autoCommitOnClose}" />
<!-- 如果为true,则当连接获取失败时自动关闭数据源,除非重新启动应用程序。所以一般不用。default : false -->
<property name="breakAfterAcquireFailure" value="${jdbc.breakAfterAcquireFailure}" />
<!-- testConnectionOnCheckout如果设置为true,每次从池中取一个连接,将做一下测试,使用automaticTestTable -->
<!-- 或者 preferredTestQuery,做一条查询语句.看看连接好不好用,不好用,就关闭它,重新从池中拿一个 -->
<property name="testConnectionOnCheckout" value="${jdbc.testConnectionOnCheckout}" />
<property name="testConnectionOnCheckin" value="${jdbc.testConnectionOnCheckin}" />
<!-- 设置在池中的没有被使用的连接,是否定时做测试,看看这个连接还可以用吗 -->
<property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}" />
<!-- 连接池在无空闲连接可用时一次性创建的新数据库连接数,default : 3 -->
<property name="acquireRetryAttempts" value="${jdbc.acquireRetryAttempts}" />
<!-- 两次连接中间隔时间,单位毫秒,连接池在获得新连接时的间隔时间。default : 1000 单位ms -->
<property name="acquireRetryDelay" value="${jdbc.acquireRetryDelay}" />
</bean>
<!-- nativeJdbcExtractor,defaultLobHandler 用来处理对clob、 blob数据型进行操作问题 -->
<!-- nativeJdbcExtractor 和 defaultLobHandler Bean 都设置为 lazy-init="true",
nativeJdbcExtractor 需要通过运行期的反射机制获取底层的 JDBC 对象,
所以需要避免在 Spring 容器启动时就实例化这两个Bean。 -->
<bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor"
lazy-init="true" />
<bean id="defaultLobHandler"
class="org.springframework.jdbc.support.lob.DefaultLobHandler"
lazy-init="true" />
<!-- JdbcTemplate 配置开始 -->
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate" autowire="byName">
<constructor-arg><ref bean="dataSource"/></constructor-arg>
</bean>
<bean id="namedParameterJdbcTemplate"
class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate" autowire="byName">
<constructor-arg><ref bean="dataSource"/></constructor-arg>
</bean>
<bean id="simpleJdbcTemplate"
class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate" autowire="byName">
<constructor-arg><ref bean="dataSource"/></constructor-arg>
</bean>
<!-- JdbcTemplate 配置结束 -->
<!-- 事物配置 开始-->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 事务管理 声明式事务-->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- Spring使用 <tx:advice>和 <aop:config> 用来配置事务 -->
<!-- 通知 -->
<!-- <tx:advice id="txAdvice" transaction-manager="transactionManager"> -->
<!-- <tx:attributes> -->
<!-- 传播行为 -->
<!-- <tx:method name="save*" propagation="REQUIRED"/> -->
<!-- <tx:method name="insert*" propagation="REQUIRED"/> -->
<!-- <tx:method name="update*" propagation="REQUIRED"/> -->
<!-- <tx:method name="delete*" propagation="REQUIRED"/> -->
<!-- <tx:method name="find*" propagation="SUPPORTS" read-only="true"/> -->
<!-- <tx:method name="select*" propagation="SUPPORTS" read-only="true"/> -->
<!-- </tx:attributes> -->
<!-- </tx:advice> -->
<!-- 配置aop -->
<!-- <aop:config> -->
<!-- <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.wxisme.ssm.service.impl.*.*(..))"/> -->
<!-- </aop:config> -->
<!-- 事物配置 结束-->
</beans>
注意这里 <!-- 事务管理 声明式事务--><tx:annotation-driven transaction-manager="transactionManager" /> 需要引入包 aopalliance-1.0.jar 否则:Caused by: Java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor 这里使用aop强化事物的配置是注释掉的, 如果要使用 Spring使用 <tx:advice>和 <aop:config> 用来配置事务 除了aopalliance-1.0.jar 还需要额外引入包 aspectjrt.jar,aspectjweaver.jar ,
四、测试一下
现在为了方便还是使用上一篇的Controller修改如下
package com.mvc.first; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * 测试jdbcTemplate * * @author xiazhang * @date 2017-6-11 */ @Controller @RequestMapping(value="/hello") public class FirstController { @Autowired private JdbcTemplate jdbcTemplate; private static Log logger = LogFactory.getLog(FirstController.class); @RequestMapping(value="/world",method=RequestMethod.GET) public String hello(Model model,HttpServletRequest request,HttpServletResponse response){ response.setCharacterEncoding("UTF-8"); model.addAttribute("msg", "你好spring mvc"); List<Map<String, Object>> list = jdbcTemplate.queryForList("select id,classes,dress from my_info"); if(list != null){ for (Map<String, Object> map : list) { logger.info("jdbcTemplate:"+map.get("id")+","+map.get("classes")+","+map.get("dress")); } }else{ logger.info("查询结果为空!!!!!!!!!"); } return "index"; } }
运行项目、发送请求
结果
success
相关文章推荐
- JPA整合Spring配置数据源
- Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法
- Spring两个数据源配置在容器启动出错,No unique bean of type [org.springframework.jdbc.core.JdbcTemplate] is defined:
- Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法
- Struts Spring Ibatis整合框架搭建配置文档
- struts2 ibatis spring 框架整合配置文件的设置
- Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法
- 关于搭建restful web service + springMVC + ibatis/hibernate的整合和XML配置意思和ssh+springMVC框架搭建
- Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法
- Spring3 整合MyBatis3 配置多数据源 动态切换 选择SqlSessionFactory
- struts2,hibernate,spring三大框架整合的注册程序(xml 配置,mysql数据库)
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法
- 关于Spring整合数据源配置的一些收藏
- spring 框架 在Tomcat5.0正常 升级到Tomcat 5.5 出现不能配置Spring 数据源问题
- 手动配置三大框架整合,Spring+Struts2+Hibernate
- Spring和HIbernate整合配置数据源 出现 'java.lang.String'不能转换为java.lang.class
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法
- Mina框架与Spring整合配置文件