原创!转载请注明地址 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是Java Web开发中经典的三大框架,它们分别负责MVC模式中的控制层、业务层和服务层。EasyUI则是一个基于jQuery的UI组件库,用于快速构建美观且响应式的Web应用界面。下面我们将深入探讨这三...
在Struts2和MyBatis的整合中,Spring可以协调这两个框架,管理Struts2的Action和MyBatis的Mapper接口,实现依赖注入和事务控制。 整合这三大框架的过程主要包括以下几个步骤: 1. 配置Spring:创建Spring的配置...
Spring会管理Struts 2的Action,同时提供数据源和事务管理。接着,Struts 2的配置文件会定义Action的映射,以及转发到对应的JSP视图。在Action中,我们可以通过Spring的依赖注入获取到MyBatis的SqlSession,执行SQL...
MyBatis与Spring的整合使得我们可以利用Spring的事务管理,同时通过MyBatis的SqlSessionFactory和SqlSession接口进行数据访问。 在本项目中,"myweb_sql.sql"很可能是数据库脚本,用于创建XX学园管理系统的数据库表...
Spring还包含了Spring MVC,这是一个与Struts类似的MVC框架,但在本项目中,Spring可能更多地被用作服务层和持久层的容器,管理Struts中的Action和其他业务组件,以及整合MyBatis。 **MyBatis** 是一个轻量级的持久...
Spring还提供了对数据访问、事务管理、安全、邮件服务等的支持,并且可以与众多其他框架集成,如MyBatis和Struts2。 2. **MyBatis框架**:MyBatis是一个轻量级的持久层框架,它将SQL语句和Java代码紧密结合起来,...
标题 "struts2 spring3 mybatis3整合简单例子" 涉及到的是Java Web开发中的三大主流框架——Struts2、Spring3和MyBatis3的整合应用。这是一个常见的企业级开发组合,用于构建高效、灵活的后端服务。 Struts2是一个...
Struts2、Spring3和MyBatis是Java Web开发中常用的三大框架,它们各自负责不同的职责,协同工作能够构建出高效、松耦合的Web应用。这个“Struts2+Spring3+MyBatis结合项目”是一个实战示例,旨在帮助开发者深入理解...
在Java Web开发中,MyBatis、Spring和Struts2是三个非常重要的框架,它们各自在不同的层面上提供了强大的功能,常被组合使用以构建高效的企业级应用。本压缩包包含的是这三个框架协同工作时所需的必备jar包。下面将...
在本例中,Spring将被用来管理Struts2中的Action以及数据访问层的对象,例如MyBatis的SqlSession和Mapper接口。 MyBatis是一个持久层框架,它简化了数据库操作,通过XML或注解方式配置和映射原生信息,将接口和Java...
Struts2、Spring和MyBatis是Java Web开发中三个非常重要的开源框架,它们的整合为开发者提供了强大的功能,能够实现MVC(Model-View-Controller)架构模式,提高开发效率,同时也便于项目的维护和扩展。 Struts2是...
Spring会管理Struts2和MyBatis的生命周期,同时提供事务管理。Struts2的动作(Action)可以通过Spring的依赖注入获取服务层对象,而MyBatis的SqlSession可以通过Spring的SqlSessionFactoryBean创建。此外,还需要...
**Spring3、Struts2和MyBatis3是Java企业级开发中三个核心的开源框架,它们各自在应用中承担着不同的职责。Spring3作为全面的框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能,极大地简化了Java应用的复杂性...
在这个项目中,Spring管理着所有Bean的生命周期,包括Struts的Action和MyBatis的SqlSession。Struts的Action类通过Spring的依赖注入获取到业务服务对象,执行业务逻辑。而MyBatis的Mapper接口与XML配置文件配合,...
3. **Spring整合**:Spring可以管理Struts2的Action和MyBatis的SqlSession,确保资源的正确关闭和事务的一致性。 4. **分页模型**:定义一个通用的分页模型类,包含当前页、每页大小、总页数等属性,便于在Action和...
整合过程中,Spring起到中心控制的作用,同时负责管理Struts2和Mybatis的相关配置和生命周期。 1. **Spring与Struts2整合**:Struts2是一个MVC框架,负责处理用户的请求并返回响应。在整合中,Spring负责管理Struts...
Struts2、Spring和MyBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。这里我们将深入探讨如何在myeclipse2014环境下,利用JDK1.7来实现一个简单的基于这三大...
在这个小型管理系统中,Spring作为核心框架,负责管理所有bean的生命周期,包括Struts2的Action和MyBatis的SqlSession工厂。Struts2作为前端控制器,接收HTTP请求并转发到相应的Action处理,Action再通过Spring管理...
SSM框架,即Struts2、Spring和Mybatis的集成,是Java...SSM框架的集成允许开发者充分利用Spring的依赖注入和事务管理,Struts2的MVC设计模式,以及Mybatis的简单灵活的SQL映射,从而构建出高效、可维护的Java Web应用。
Struts2、Spring3和MyBatis是Java Web开发中常用的三大框架,它们各自负责不同的职责,协同工作可以构建出高效、松耦合的Web应用。Struts2作为MVC框架,负责处理用户请求和视图展示;Spring3则是一个全面的容器,...