<?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);
}
}
分享到:
相关推荐
这部分配置定义了一个基于C3P0的数据源Bean,通过读取`jdbc.properties`中的属性值来初始化数据库连接。 ```xml <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> `...
【webwork+ibatis+spring oracle c3p0 集成框架】 WebWork、iBatis、Spring 和 Oracle C3P0 是四个在企业级Java应用开发中常用的组件,它们各自扮演着不同的角色,而将它们集成在一起可以构建一个高效、灵活且可...
5. **数据库连接**:配置数据库连接池,如C3P0或DBCP,并在iBatis的配置文件中指定数据源。 6. **测试与调试**:编写JUnit测试用例验证各层功能,确保正常工作。 通过这样的配置,开发者可以利用SSI框架快速开发出...
3. commons-dbcp.jar 或 c3p0.jar:这些是数据库连接池的实现,用于高效管理数据库连接。 4. mybatis-spring.jar:这是Spring与iBatis之间的桥梁,提供了将iBatis SqlSessionTemplate和SqlSessionFactoryBean集成到...
可以使用Apache的DBCP或C3P0等连接池实现,或者使用Spring的AbstractDataSource类。 4. **SqlSessionFactory配置**: 创建SqlSessionFactoryBean,它会根据配置文件(如`mybatis-config.xml`)创建...
6. **数据库连接**:如何配置数据库连接池,如C3P0或Druid,并建立与iBatis的关联。 7. **模型和控制器**:展示如何创建Action类、Service类和DAO类,以及它们之间的协作关系。 8. **视图渲染**:讲解如何使用JSP...
本篇将详细介绍如何在Spring 2.5版本中整合iBATIS 2.3,并利用Spring的声明式事务管理,以提升应用程序的稳定性和可维护性。 首先,我们需要了解Spring 2.5和iBATIS 2.3的基本概念。Spring 2.5是Spring框架的一个...
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> ${jdbc.driver}"/> ${jdbc.url}"/> ${jdbc.username}"/> ${jdbc.password}"/> <!-- 其他配置属性... --> ...
iBatis与Spring整合,可以实现声明式事务管理和DAO(Data Access Object)的自动化创建。 集成这些技术的关键在于配置。首先,我们需要确保项目中包含以下库文件: - `ibatis-2.3.4.726.jar`: iBatis的核心库 - `...
3. **配置Spring**:定义bean配置文件,声明Service、DAO、DataSource等组件,启用Spring的AOP和事务管理。 4. **配置Struts**:设置struts.xml,定义Action和结果页面,配置全局和拦截器。 5. **配置iBatis**:编写...
通过Spring的管理,可以轻松地实现事务控制、AOP等高级功能,同时利用iBATIS的灵活性和简洁性来处理SQL。在实际开发中,还需要注意异常处理、性能优化等方面的问题,以确保系统的稳定性和效率。
Spring需要一个数据源来连接数据库,可以通过DataSource Bean来实现,例如使用Apache的DBCP或C3P0等连接池: ```xml ${jdbc.driver}"/> ${jdbc.url}"/> ${jdbc.username}"/> ${jdbc.password}"/> ``` 3. ...
2. **数据源配置**:在Spring中配置数据源,例如使用Apache的DBCP或C3P0,这是连接数据库的基础。数据源的配置通常包含数据库URL、用户名、密码等信息。 3. **SqlSessionFactoryBean配置**:SqlSessionFactoryBean...
综上所述,这个项目整合了 Axis2(用于 WebService)、iBatis(处理 SQL 查询)、Spring(管理依赖和事务)、Hibernate(ORM)以及 Quartz(定时任务)等技术,构建了一个完整的后端服务系统。通过合理的配置和组织...
总结来说,这个“osgi数据库连接demo”展示了如何在OSGi环境中配置C3P0连接池,使用iBATIS进行数据访问,并利用Spring-DS管理这些组件。整个过程涉及到OSGi的包管理、连接池的配置、数据访问层的集成以及日志记录。...
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 ...
首先,我们需要在`pom.xml`文件中配置相关依赖,确保引入Spring、MyBatis、MyBatis-Spring整合包、数据库驱动以及连接池等必要库。例如,指定Spring版本为5.0.2.RELEASE,并引入如下依赖: ```xml <spring....
- 为了提高性能和避免资源浪费,Spring通常会集成C3P0或DBCP等连接池技术,以实现数据库连接的重用。 - 在实际开发中,还需要考虑事务管理和异常处理等问题。Spring提供了强大的AOP支持,使得事务控制变得更加简单...
实现SSM多数据源同包的关键在于正确配置Spring的DataSource、事务管理器以及MyBatis的SqlSessionFactory,确保它们能够与正确的数据源交互。同时,合理地设计业务逻辑,使得不同的数据源在代码中被适当地访问和管理...