`

Spring 与 ibatis 整合

阅读更多

 

    我们要知道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 整合集成的主要步骤和知识点。通过这样的集成,可以利用 Spring 的强大功能管理和协调整个应用程序,同时利用 iBATIS 的灵活性处理数据库操作,实现高效的企业级应用开发。在实际项目中,...

    spring ibatis整合所需jar包

    1. 添加依赖:在`spring ibatis整合所需jar包`中,通常包含以下关键jar文件: - spring核心库:如spring-context、spring-beans、spring-aop等,用于Spring框架的基本功能。 - spring-jdbc和spring-tx:支持Spring...

    spring3.2与Ibatis整合

    7. **测试**:在Spring与iBatis整合后,可以使用Spring的`@Transactional`注解进行单元测试,确保每个方法都在独立的事务中执行,便于模拟各种数据状态并进行断言。 以上就是关于"Spring 3.2与iBatis整合"及"在...

    Spring对IBatis的整合

    #### 一、Spring与IBatis整合概述 Spring框架与IBatis(现称为MyBatis)的整合为开发者提供了一种更简洁、更强大的数据库访问方式。Spring通过其内置的支持机制极大地简化了原有的IBatis访问代码,并且提供了与...

    Spring+iBatis整合详解

    ### Spring与iBatis整合详解 #### 一、前言 在Java企业级应用开发中,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)能力深受开发者喜爱,而iBatis(现更名为MyBatis)作为一款优秀的持久层框架,通过...

    spring_ibatis整合案例

    在IT行业中,Spring框架与iBatis(现为MyBatis)的整合是常见的数据访问层解决方案,尤其在企业级应用开发中极为普遍。Spring是一个全面的Java应用程序框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-...

    spring3 ibatis整合实例

    这个项目实例对于初学者来说是一份宝贵的资源,通过实际操作,可以更好地理解和掌握Spring3与iBatis的整合应用。记得仔细阅读项目文档,理解每一个配置和代码的作用,这将对你的编程技能提升大有裨益。

    Spring整合iBatis

    通过以上步骤,我们可以成功地将Spring与iBatis整合,实现高效、灵活的数据库操作。这种整合方式不仅提高了代码的可读性和可维护性,还能利用Spring的强大功能,使应用程序更加健壮。在实际开发中,可以根据项目需求...

    struts2 + spring + ibatis 整合例子

    通过Struts2、Spring和iBatis的整合,我们可以实现模型、视图和控制的分离,提高代码的可读性和可维护性。同时,Spring的DI和AOP特性使得对象管理更加灵活,iBatis则提供了方便的数据库操作方式。这样的组合在企业级...

    struts2、spring、ibatis整合实例

    struts2、spring、ibatis整合实例 struts2、spring、ibatis整合实例 struts2、spring、ibatis整合实例 struts2、spring、ibatis整合实例

    Spring+ibatis 保留ibatis事务的配置

    ### Spring与ibatis整合采用保留ibatis事务 #### 一、Spring与ibatis整合基础 Spring 和 ibatis(现称为 MyBatis)是两个非常流行的Java开发框架。Spring 是一个轻量级的Java应用开发框架,提供了依赖注入、面向切...

    Struts2+Spring+Ibatis整合

    "Struts2+Spring+iBatis整合"是一个典型的MVC(Model-View-Controller)架构实现,适用于构建大型企业级应用。下面将详细介绍这三个框架以及它们整合的关键点。 **Struts2** 是一个基于MVC设计模式的Web应用框架,...

    Spring 整合 iBATIS 文档 详解 加 源代码

    当Spring与iBATIS整合时,能够实现更高效、更便捷的数据访问。本文将深入探讨Spring整合iBATIS的过程,以及如何通过源代码理解和实践这一过程。 首先,了解iBATIS的基本概念。iBATIS是一个SQL映射框架,它将SQL语句...

    spring和ibatis整合

    在整合iBatis时,Spring会管理SqlSessionFactory和SqlSessionTemplate,这些都是与数据库交互的关键组件。 2. **配置文件**:在整合过程中,需要创建XML配置文件,如`sqlMapConfig.xml`来配置iBatis的基本设置,...

    Struts+Spring+Ibatis整合框架搭建配置文档

    ### Struts+Spring+Ibatis整合框架搭建配置详解 在当今复杂的软件开发环境中,整合不同的框架以构建高效、可维护的应用程序变得尤为重要。Struts、Spring与Ibatis(现称MyBatis)作为三个功能互补的Java框架,它们...

    Spring宠物店非常典型的展现了Spring和IBatis的整合

    总的来说,Spring宠物店项目是理解Spring与IBatis整合的理想实践案例。它展示了如何在Spring环境中配置和使用IBatis,以及如何利用Spring的事务管理和异常处理机制来构建健壮的应用程序。通过深入研究这个项目,...

    struts2+spring+ibatis整合项目实例

    `Struts+Spring+Ibatis整合框架搭建配置文档.doc`应该详细阐述了如何配置Spring以管理Struts2的Action和iBatis的数据源及SqlSession。 3. **iBatis**:iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,使得...

    spring+struts2+ibatis整合的jar包

    当我们把Spring、Struts2和iBatis整合在一起时,可以构建出一个高效、模块化的Web应用。Spring作为整体的框架容器,负责管理所有的Bean,包括Struts2和iBatis的相关组件。Struts2处理HTTP请求,调用Spring管理的业务...

    spring+ibatis整合web所需ibatis包

    通过以上步骤,你可以成功地将Spring和iBatis整合在一起,实现高效且易于维护的企业级Web应用。在实际开发中,还要注意数据库连接池的选择,日志系统的配置,以及错误处理和异常封装,以提升整个系统的稳定性和健壮...

    Struts2+Spring+Ibatis整合的简单人事管理系统

    Struts2+Spring+Ibatis整合的简单人事管理系统 没分了,转载过来的,有需要的看看吧,我觉得不错~~

Global site tag (gtag.js) - Google Analytics