`
拖拖鞋
  • 浏览: 92017 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

关于不用Spring将MyBatis的SqlSession事务交给Struts2管理的做法

阅读更多
原创!转载请注明地址 http://ycde2009.iteye.com/blog/1861026
在这里主要是用拦截器的思想来对Mybatis的session进行commit和close的操作。
还需要做的就是把打开的SqlSession加入到ThreadLocal里面,以后每次用到就去ThreadLocal里面找,能找到就返回,不能找到,就新建一个,并用ThreadLocal.set()保存到ThreadLocal。
在拦截器里面invocation.invoke();后关闭资源。
将session与当前线程绑定
public class SQLSessionThreadLocal {
    public static final ThreadLocal session = new ThreadLocal();
    public static SqlSession currentSession() {
        SqlSession s = (SqlSession)session.get();
        if(s == null){
            s = MyBatisUtil.getSqlSessionFactory().openSession();
// MyBatisUtil.getSqlSessionFactory()获得一个
            session.set(s);
        }
        return s;
    }
       public static void clearCurrentSession() {
        SqlSession s = (SqlSession)session.get();
        if(s != null){
            s.commit();
            s.close();
        }
        session.set(null);
        //当前线程清空session,如果不清空,则在调用的时候可能会抛出异常:
        //org.apache.ibatis.executor.ExecutorException: Executor was closed
    }
}

--------------------注意------------------
在使用struts2拦截器来管理mybatis的事物的时候,在拦截器的方法intercept()里,应该在invoke的前后,调用自己写的工具方法clearCurrentSession(),来清空当前线程里面存放的session。
拦截器里的方法:
public String intercept(ActionInvocation arg0) throws Exception {
        // 调用方法,在当前线程中,清空上一次的session
        SQLSessionThreadLocal.clearCurrentSession();
       
        String result = arg0.invoke();
        // 调用方法,清空本次的session
        SQLSessionThreadLocal.clearCurrentSession();
       
        return result;
}
分享到:
评论

相关推荐

    struts2+spring+mybatis+easyui的实现

    Struts2、Spring和MyBatis是Java Web开发中经典的三大框架,它们分别负责MVC模式中的控制层、业务层和服务层。EasyUI则是一个基于jQuery的UI组件库,用于快速构建美观且响应式的Web应用界面。下面我们将深入探讨这三...

    struts2_mybatis_spring_框架实例整合_数据库 文档

    在Struts2和MyBatis的整合中,Spring可以协调这两个框架,管理Struts2的Action和MyBatis的Mapper接口,实现依赖注入和事务控制。 整合这三大框架的过程主要包括以下几个步骤: 1. 配置Spring:创建Spring的配置...

    spring3.2.6struts2.3.15MyBatis3整合DEMO

    Spring会管理Struts 2的Action,同时提供数据源和事务管理。接着,Struts 2的配置文件会定义Action的映射,以及转发到对应的JSP视图。在Action中,我们可以通过Spring的依赖注入获取到MyBatis的SqlSession,执行SQL...

    spring3、struts2、mybatis结合的一个简单web实现

    MyBatis与Spring的整合使得我们可以利用Spring的事务管理,同时通过MyBatis的SqlSessionFactory和SqlSession接口进行数据访问。 在本项目中,"myweb_sql.sql"很可能是数据库脚本,用于创建XX学园管理系统的数据库表...

    Struts+spring+mybatis

    Spring还包含了Spring MVC,这是一个与Struts类似的MVC框架,但在本项目中,Spring可能更多地被用作服务层和持久层的容器,管理Struts中的Action和其他业务组件,以及整合MyBatis。 **MyBatis** 是一个轻量级的持久...

    spring,mybatis,struts2框架jar包

    Spring还提供了对数据访问、事务管理、安全、邮件服务等的支持,并且可以与众多其他框架集成,如MyBatis和Struts2。 2. **MyBatis框架**:MyBatis是一个轻量级的持久层框架,它将SQL语句和Java代码紧密结合起来,...

    struts2 spring3 mybatis3整合简单例子

    标题 "struts2 spring3 mybatis3整合简单例子" 涉及到的是Java Web开发中的三大主流框架——Struts2、Spring3和MyBatis3的整合应用。这是一个常见的企业级开发组合,用于构建高效、灵活的后端服务。 Struts2是一个...

    Struts2+Spring3+MyBatis结合项目

    Struts2、Spring3和MyBatis是Java Web开发中常用的三大框架,它们各自负责不同的职责,协同工作能够构建出高效、松耦合的Web应用。这个“Struts2+Spring3+MyBatis结合项目”是一个实战示例,旨在帮助开发者深入理解...

    mybatis+spring+struts必须的jar包

    在Java Web开发中,MyBatis、Spring和Struts2是三个非常重要的框架,它们各自在不同的层面上提供了强大的功能,常被组合使用以构建高效的企业级应用。本压缩包包含的是这三个框架协同工作时所需的必备jar包。下面将...

    struts2+spring+mybatis增删改查小例子

    在本例中,Spring将被用来管理Struts2中的Action以及数据访问层的对象,例如MyBatis的SqlSession和Mapper接口。 MyBatis是一个持久层框架,它简化了数据库操作,通过XML或注解方式配置和映射原生信息,将接口和Java...

    struts2+spring+mybatis整合

    Struts2、Spring和MyBatis是Java Web开发中三个非常重要的开源框架,它们的整合为开发者提供了强大的功能,能够实现MVC(Model-View-Controller)架构模式,提高开发效率,同时也便于项目的维护和扩展。 Struts2是...

    spring4+struts2+mybatis完整整合包

    Spring会管理Struts2和MyBatis的生命周期,同时提供事务管理。Struts2的动作(Action)可以通过Spring的依赖注入获取服务层对象,而MyBatis的SqlSession可以通过Spring的SqlSessionFactoryBean创建。此外,还需要...

    SPRING3+STRUTS2+MYBATIS3简单例子

    **Spring3、Struts2和MyBatis3是Java企业级开发中三个核心的开源框架,它们各自在应用中承担着不同的职责。Spring3作为全面的框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能,极大地简化了Java应用的复杂性...

    Spring+Struts+MyBatis完整项目

    在这个项目中,Spring管理着所有Bean的生命周期,包括Struts的Action和MyBatis的SqlSession。Struts的Action类通过Spring的依赖注入获取到业务服务对象,执行业务逻辑。而MyBatis的Mapper接口与XML配置文件配合,...

    (四)struts2- 2.3.15.3 spring3.2.4 mybatis-3.2.3 通用分页(不同数据库) 拦截器(2014-01-27 17:16)

    3. **Spring整合**:Spring可以管理Struts2的Action和MyBatis的SqlSession,确保资源的正确关闭和事务的一致性。 4. **分页模型**:定义一个通用的分页模型类,包含当前页、每页大小、总页数等属性,便于在Action和...

    Spring框架以及与Struts、Mybatis的整合

    整合过程中,Spring起到中心控制的作用,同时负责管理Struts2和Mybatis的相关配置和生命周期。 1. **Spring与Struts2整合**:Struts2是一个MVC框架,负责处理用户的请求并返回响应。在整合中,Spring负责管理Struts...

    简单的struts2+spring+mybatis的增删查改操作

    Struts2、Spring和MyBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。这里我们将深入探讨如何在myeclipse2014环境下,利用JDK1.7来实现一个简单的基于这三大...

    MyBatis+Struts2+Spring 增删改查

    在这个小型管理系统中,Spring作为核心框架,负责管理所有bean的生命周期,包括Struts2的Action和MyBatis的SqlSession工厂。Struts2作为前端控制器,接收HTTP请求并转发到相应的Action处理,Action再通过Spring管理...

    struts2,spring,mybatis集成jar包以及相关jar

    SSM框架,即Struts2、Spring和Mybatis的集成,是Java...SSM框架的集成允许开发者充分利用Spring的依赖注入和事务管理,Struts2的MVC设计模式,以及Mybatis的简单灵活的SQL映射,从而构建出高效、可维护的Java Web应用。

    struts2 正和spring3和mybatis

    Struts2、Spring3和MyBatis是Java Web开发中常用的三大框架,它们各自负责不同的职责,协同工作可以构建出高效、松耦合的Web应用。Struts2作为MVC框架,负责处理用户请求和视图展示;Spring3则是一个全面的容器,...

Global site tag (gtag.js) - Google Analytics