我们要知道Spring和ibatis都是无侵入性和低耦合性的框架,所以,我们是可以单独的进行开发,也就是可以不需要进行整合也可以开发。如果我们要在ibatis中使用Spring的IOC容器的注入和AOP来管理事务的话,将两个框架进行整合起来开发是我们一个很好的选择,但决不是唯一选择,我曾经就没有整合两个框架就做过项目。下面我将简单介绍一个如何整合?希望大家能明白。
1. 准备jar包,我主要用了一下jar包:
aspectjrt.jar、aspectjweaver.jar、commons-dbcp.jar、commons-logging.jar、commons-pool.jar、
log4j-1.2.14.jar、spring.jar、ibatis-2.3.0.677.jar、数据库JDBC驱动
2. 写JavaBean实体(User.java)、映射文件(User.xml)和ibatis配置文件(sql-map-config.xml)
User.java
public class User{
private String user_id;
private String user_name;
.......
}
User.xml
<sqlMap namespace="Users">
<typeAlias alias="UserInfoPO" type="po.User" />
<!-- 得到用户信息 -->
<select id="getUsersById" parameterClass="String"
resultClass="UserInfoPO">
select * from sts_user where user_id=#user_id#
</select>
.........
</sqlMap>
sql-map-config.xml
<sqlMapConfig>
<sqlMap resource="xsql/Users.xml"/>
</sqlMapConfig>
3. 衔接IBatis配置和DAO实现
package dao.impl.ibatis;
import java.sql.SQLException;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import po.UserInfoPO;
import dao.UserDao;
public class UserDaoImpl extends SqlMapClientDaoSupport implements UserDao{
//根据用户id得到用户信息
public UserInfoPO getUsersById (String user_id) throws SQLException {
return (UserInfoPO)getSqlMapClientTemplate().queryForObject("getUsersById", user_id);
}
}
上述代码中出现了Spring提供的IBatis DAO支持类和获取SqlMapClientTemplate的父类模板方法。这个UserDao是我建的一个接口。
4.关键整合点:Spring配置文件(applicationContext-ibatis.xml)
applicationContext-ibatis.xml
<!-- 相关数据源 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="orcl" />
<property name="password" value="lzp" />
<!-- 这里可以使用属性文件,大家可以参考sprig提供的宠物店的列子 -->
</bean>
<!-- Spring提供的iBatis的SqlMap配置-->
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="WEB-INF/sql-map-config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 添加声明式事务管理 -->
<!-- 事务管理的定义 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="baseTransactionProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props> <!-- 事务传播特性 -->
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="modify*">PROPAGATION_REQUIRED</prop>
<prop key="*">readOnly</prop>
</props>
</property>
</bean>
<!-- 定义业务对象,注入dao -->
<bean id="userService" parent="baseTransactionProxy">
<property name="target">
<bean class="service.impl.UserServiceImpl">
<property name="userDao" ref="userDao" />
</bean>
</property>
</bean>
<!-- DAO定义-->
<bean id="userDao" class="dao.impl.ibatis.UserDaoImpl">
<property name="sqlMapClient" ref="sqlMapClient" />
<property name="dataSource" ref="dataSource" />
</bean>
至此就基本完成了Spring IoC和IBatis的整合了.如有问题,可以去看Spring提供的官方文档和例子。上面我们谈到事务传播特性,我就简单的介绍一下事务的几个传播特性:
1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启
2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行
3. PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
4. PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
5. PROPAGATION_NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。
6. PROPAGATION_NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常
7. PROPAGATION_NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务,则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行
分享到:
相关推荐
以上就是 Spring 与 iBATIS 整合集成的主要步骤和知识点。通过这样的集成,可以利用 Spring 的强大功能管理和协调整个应用程序,同时利用 iBATIS 的灵活性处理数据库操作,实现高效的企业级应用开发。在实际项目中,...
1. 添加依赖:在`spring ibatis整合所需jar包`中,通常包含以下关键jar文件: - spring核心库:如spring-context、spring-beans、spring-aop等,用于Spring框架的基本功能。 - spring-jdbc和spring-tx:支持Spring...
7. **测试**:在Spring与iBatis整合后,可以使用Spring的`@Transactional`注解进行单元测试,确保每个方法都在独立的事务中执行,便于模拟各种数据状态并进行断言。 以上就是关于"Spring 3.2与iBatis整合"及"在...
#### 一、Spring与IBatis整合概述 Spring框架与IBatis(现称为MyBatis)的整合为开发者提供了一种更简洁、更强大的数据库访问方式。Spring通过其内置的支持机制极大地简化了原有的IBatis访问代码,并且提供了与...
### Spring与iBatis整合详解 #### 一、前言 在Java企业级应用开发中,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)能力深受开发者喜爱,而iBatis(现更名为MyBatis)作为一款优秀的持久层框架,通过...
在IT行业中,Spring框架与iBatis(现为MyBatis)的整合是常见的数据访问层解决方案,尤其在企业级应用开发中极为普遍。Spring是一个全面的Java应用程序框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-...
这个项目实例对于初学者来说是一份宝贵的资源,通过实际操作,可以更好地理解和掌握Spring3与iBatis的整合应用。记得仔细阅读项目文档,理解每一个配置和代码的作用,这将对你的编程技能提升大有裨益。
通过以上步骤,我们可以成功地将Spring与iBatis整合,实现高效、灵活的数据库操作。这种整合方式不仅提高了代码的可读性和可维护性,还能利用Spring的强大功能,使应用程序更加健壮。在实际开发中,可以根据项目需求...
通过Struts2、Spring和iBatis的整合,我们可以实现模型、视图和控制的分离,提高代码的可读性和可维护性。同时,Spring的DI和AOP特性使得对象管理更加灵活,iBatis则提供了方便的数据库操作方式。这样的组合在企业级...
struts2、spring、ibatis整合实例 struts2、spring、ibatis整合实例 struts2、spring、ibatis整合实例 struts2、spring、ibatis整合实例
### Spring与ibatis整合采用保留ibatis事务 #### 一、Spring与ibatis整合基础 Spring 和 ibatis(现称为 MyBatis)是两个非常流行的Java开发框架。Spring 是一个轻量级的Java应用开发框架,提供了依赖注入、面向切...
"Struts2+Spring+iBatis整合"是一个典型的MVC(Model-View-Controller)架构实现,适用于构建大型企业级应用。下面将详细介绍这三个框架以及它们整合的关键点。 **Struts2** 是一个基于MVC设计模式的Web应用框架,...
当Spring与iBATIS整合时,能够实现更高效、更便捷的数据访问。本文将深入探讨Spring整合iBATIS的过程,以及如何通过源代码理解和实践这一过程。 首先,了解iBATIS的基本概念。iBATIS是一个SQL映射框架,它将SQL语句...
在整合iBatis时,Spring会管理SqlSessionFactory和SqlSessionTemplate,这些都是与数据库交互的关键组件。 2. **配置文件**:在整合过程中,需要创建XML配置文件,如`sqlMapConfig.xml`来配置iBatis的基本设置,...
### Struts+Spring+Ibatis整合框架搭建配置详解 在当今复杂的软件开发环境中,整合不同的框架以构建高效、可维护的应用程序变得尤为重要。Struts、Spring与Ibatis(现称MyBatis)作为三个功能互补的Java框架,它们...
总的来说,Spring宠物店项目是理解Spring与IBatis整合的理想实践案例。它展示了如何在Spring环境中配置和使用IBatis,以及如何利用Spring的事务管理和异常处理机制来构建健壮的应用程序。通过深入研究这个项目,...
`Struts+Spring+Ibatis整合框架搭建配置文档.doc`应该详细阐述了如何配置Spring以管理Struts2的Action和iBatis的数据源及SqlSession。 3. **iBatis**:iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,使得...
当我们把Spring、Struts2和iBatis整合在一起时,可以构建出一个高效、模块化的Web应用。Spring作为整体的框架容器,负责管理所有的Bean,包括Struts2和iBatis的相关组件。Struts2处理HTTP请求,调用Spring管理的业务...
通过以上步骤,你可以成功地将Spring和iBatis整合在一起,实现高效且易于维护的企业级Web应用。在实际开发中,还要注意数据库连接池的选择,日志系统的配置,以及错误处理和异常封装,以提升整个系统的稳定性和健壮...
Struts2+Spring+Ibatis整合的简单人事管理系统 没分了,转载过来的,有需要的看看吧,我觉得不错~~