`
lwx522
  • 浏览: 35730 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Spring+ibatis+c3p0+aop事务管理整合配置样例

 
阅读更多
<?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:jee="http://www.springframework.org/schema/jee"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-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/context http://www.springframework.org/schema/context/spring-context-2.5.xsd 
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

    <!-- 加载配置文件 -->
    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:db.properties</value>
            </list>
        </property>
    </bean>
        
	<!-- 配置数据源 -->
 	<bean id="dataSource"  class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
	    <property name="driverClass" value="com.mysql.jdbc.Driver" />
	    <property name="jdbcUrl">
        	<value><![CDATA[jdbc:mysql://${db.host}:${db.port}/${db.database}?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull]]></value>
	    </property>
		<property name="user" 				value="${db.userName}" />
		<property name="password" 			value="${db.password}" />
		<property name="maxPoolSize" 		value="20" />
		<property name="minPoolSize" 		value="5" />
		<property name="maxStatements" 		value="200" />
		<property name="initialPoolSize" 	value="10" />
		<property name="maxIdleTime" 		value="60"/>
		<property name="idleConnectionTestPeriod" 	value="30" />
	    <property name="testConnectionOnCheckin" 	value="false" />
	    <property name="testConnectionOnCheckout" 	value="false" />
	    <property name="preferredTestQuery" 		value="SELECT 1 FROM DUAL" />
    </bean>   

	<!-- 配置ibatis -->
	<bean id="sqlMapClient"
		class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocation"
			value="classpath:sqlMapConfig.xml" />
		<property name="dataSource" ref="dataSource" />
	</bean>

	<bean id="sqlMapClientTemplate"
		class="org.springframework.orm.ibatis.SqlMapClientTemplate">
		<property name="sqlMapClient" ref="sqlMapClient" />
	</bean>

	<!-- 事务的配置 -->
	<bean id="txManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="find*" propagation="SUPPORTS" read-only="true" timeout="20" />
			<tx:method name="add*" 	propagation="REQUIRED" timeout="20" />
			<tx:method name="update*" propagation="REQUIRED" timeout="20" />
			<tx:method name="delete*" propagation="REQUIRED" timeout="20" />
			<tx:method name="*" />
		</tx:attributes>
	</tx:advice>

	<aop:config>
		<aop:pointcut id="serviceTransaction"
			expression="execution(* com.surfilter.collector.service.*.*.*(..))" />
		<aop:advisor advice-ref="txAdvice"
			pointcut-ref="serviceTransaction" />
	</aop:config>
</beans>

 各框架版本  spring 2.5

                   ibatis-2.3.4.726

                   c3p0  0.9

 

 

事务管理由spring的aop配置完成,事务封装在service层。  Dao层操作数据库由ibatis的模板封装类SqlMapClientTemplate完成。

 

package com.surfilter.collector.dao.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import org.springframework.stereotype.Repository;

import com.surfilter.collector.bean.ForumTopic;
import com.surfilter.collector.dao.base.ForumTopicDao;

@Repository
public class ForumTopicDaoImpl implements ForumTopicDao {

	@Autowired
	private SqlMapClientTemplate sqlMapClientTemplate;
	
	@Override
	public void addForumTopic(ForumTopic forumTopic) {
		Object obj= sqlMapClientTemplate.insert("addForumTopic", forumTopic);
	    if(obj!=null){
	    	forumTopic.setId((Integer)obj);
	    }
	    
	}

	@Override
	public int findForumTopicCount(String keyID) {
		return (Integer) sqlMapClientTemplate.queryForObject("findForumTopicCount", keyID);
	}

	@Override
	public ForumTopic findForumTopicByID(int id) {
		return (ForumTopic)sqlMapClientTemplate.queryForObject("findForumTopicByID", id);
	}

	@Override
	public void updateForumTopic(ForumTopic forumTopic) {
		sqlMapClientTemplate.update("updateForumTopic", forumTopic);
	}

	@SuppressWarnings("unchecked")
    @Override
    public List<ForumTopic> findForumTopics(ForumTopic forumTopic) {
        return sqlMapClientTemplate.queryForList("findForumTopics", forumTopic);
    }
	
	@SuppressWarnings("unchecked")
	@Override
	public List<ForumTopic> findForumTopicsByForumTopic(ForumTopic forumTopic) {
		return sqlMapClientTemplate.queryForList("findForumTopicsByForumTopic",forumTopic);
	}
	
	@Override
	public Integer findForumTopicsByForumTopicCount(ForumTopic forumTopic) {
		return (Integer) sqlMapClientTemplate.queryForObject("findForumTopicsByForumTopicCount",forumTopic);
	}
	
	
}

 

分享到:
评论

相关推荐

    Spring+Webwork+iBatis 组合实例

    这部分配置定义了一个基于C3P0的数据源Bean,通过读取`jdbc.properties`中的属性值来初始化数据库连接。 ```xml &lt;bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"&gt; `...

    webwork+ibatis+spring oracle c3p0 集成框架

    【webwork+ibatis+spring oracle c3p0 集成框架】 WebWork、iBatis、Spring 和 Oracle C3P0 是四个在企业级Java应用开发中常用的组件,它们各自扮演着不同的角色,而将它们集成在一起可以构建一个高效、灵活且可...

    struts+spring+ibatis配置

    5. **数据库连接**:配置数据库连接池,如C3P0或DBCP,并在iBatis的配置文件中指定数据源。 6. **测试与调试**:编写JUnit测试用例验证各层功能,确保正常工作。 通过这样的配置,开发者可以利用SSI框架快速开发出...

    spring+ibatis的项目需要的jar包

    3. commons-dbcp.jar 或 c3p0.jar:这些是数据库连接池的实现,用于高效管理数据库连接。 4. mybatis-spring.jar:这是Spring与iBatis之间的桥梁,提供了将iBatis SqlSessionTemplate和SqlSessionFactoryBean集成到...

    spring+ibatis

    可以使用Apache的DBCP或C3P0等连接池实现,或者使用Spring的AbstractDataSource类。 4. **SqlSessionFactory配置**: 创建SqlSessionFactoryBean,它会根据配置文件(如`mybatis-config.xml`)创建...

    基于struts+spring+ibatis的轻量级J2EE开发.rar

    6. **数据库连接**:如何配置数据库连接池,如C3P0或Druid,并建立与iBatis的关联。 7. **模型和控制器**:展示如何创建Action类、Service类和DAO类,以及它们之间的协作关系。 8. **视图渲染**:讲解如何使用JSP...

    Spring 2.5整合iBATIS 2.3并使用Spring的声明式事务管理

    本篇将详细介绍如何在Spring 2.5版本中整合iBATIS 2.3,并利用Spring的声明式事务管理,以提升应用程序的稳定性和可维护性。 首先,我们需要了解Spring 2.5和iBATIS 2.3的基本概念。Spring 2.5是Spring框架的一个...

    springMVC+spring+ibatis

    &lt;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"&gt; ${jdbc.driver}"/&gt; ${jdbc.url}"/&gt; ${jdbc.username}"/&gt; ${jdbc.password}"/&gt; &lt;!-- 其他配置属性... --&gt; ...

    WEB项目-集成Flex3+BlazeDS3.2+Spring2.5.6+iBatis2.3.4

    iBatis与Spring整合,可以实现声明式事务管理和DAO(Data Access Object)的自动化创建。 集成这些技术的关键在于配置。首先,我们需要确保项目中包含以下库文件: - `ibatis-2.3.4.726.jar`: iBatis的核心库 - `...

    maven spring struts ibatis oracle框架整合

    3. **配置Spring**:定义bean配置文件,声明Service、DAO、DataSource等组件,启用Spring的AOP和事务管理。 4. **配置Struts**:设置struts.xml,定义Action和结果页面,配置全局和拦截器。 5. **配置iBatis**:编写...

    Spring与iBATIS的集成示例代码

    通过Spring的管理,可以轻松地实现事务控制、AOP等高级功能,同时利用iBATIS的灵活性和简洁性来处理SQL。在实际开发中,还需要注意异常处理、性能优化等方面的问题,以确保系统的稳定性和效率。

    ibatis2+spring

    Spring需要一个数据源来连接数据库,可以通过DataSource Bean来实现,例如使用Apache的DBCP或C3P0等连接池: ```xml ${jdbc.driver}"/&gt; ${jdbc.url}"/&gt; ${jdbc.username}"/&gt; ${jdbc.password}"/&gt; ``` 3. ...

    ibatis整合spring

    2. **数据源配置**:在Spring中配置数据源,例如使用Apache的DBCP或C3P0,这是连接数据库的基础。数据源的配置通常包含数据库URL、用户名、密码等信息。 3. **SqlSessionFactoryBean配置**:SqlSessionFactoryBean...

    axis2 ibatis spring简单资料

    综上所述,这个项目整合了 Axis2(用于 WebService)、iBatis(处理 SQL 查询)、Spring(管理依赖和事务)、Hibernate(ORM)以及 Quartz(定时任务)等技术,构建了一个完整的后端服务系统。通过合理的配置和组织...

    osgi数据库连接demo

    总结来说,这个“osgi数据库连接demo”展示了如何在OSGi环境中配置C3P0连接池,使用iBATIS进行数据访问,并利用Spring-DS管理这些组件。整个过程涉及到OSGi的包管理、连接池的配置、数据访问层的集成以及日志记录。...

    c3p0-0.9.1.2等等

    c3p0-0.9.1.2 cglib-2.1.3 cglib-2.1.3 cglib-nodep-2.1_3 commons-attributes-api commons-attributes-compiler commons-codec commons-collections-2.1.1 commons-dbcp commons-fileupload commons-httpclient ...

    【Maven配置四】配置Spring+整合MyBatis实现动态扫描开发

    首先,我们需要在`pom.xml`文件中配置相关依赖,确保引入Spring、MyBatis、MyBatis-Spring整合包、数据库驱动以及连接池等必要库。例如,指定Spring版本为5.0.2.RELEASE,并引入如下依赖: ```xml &lt;spring....

    SSI框架整合小结

    - 为了提高性能和避免资源浪费,Spring通常会集成C3P0或DBCP等连接池技术,以实现数据库连接的重用。 - 在实际开发中,还需要考虑事务管理和异常处理等问题。Spring提供了强大的AOP支持,使得事务控制变得更加简单...

    SSM多数据源同包

    实现SSM多数据源同包的关键在于正确配置Spring的DataSource、事务管理器以及MyBatis的SqlSessionFactory,确保它们能够与正确的数据源交互。同时,合理地设计业务逻辑,使得不同的数据源在代码中被适当地访问和管理...

Global site tag (gtag.js) - Google Analytics