`
suhongliang5332
  • 浏览: 23849 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Struts2+Mybatis+Freemarker+Tiles架构灵活的开发框架(五)

 
阅读更多
推荐的文件分层结构如下
com.XXX.lib.action   主要放置Action,控制前台跳转
com.XXX.lib.cservice 主要放置Service,实现业务逻辑
com.XXX.lib.dao      主要放置dao,实现数据库操作
com.XXX.lib.emodel   主要放置Model,实现模型操作
com.XXX.lib.fintface 主要放置interface,定义接口
com.XXX.lib.global   主要放置全局共享类和管理者
com.XXX.lib.global.constant 主要放置全局变量
com.XXX.lib.global.proxy    主要放置全局代理
com.XXX.lib.mybatis         主要放置Mybatis对象

接着上面的,完成mybatis链接
globalManager如下
package com.XXX.lib.global;

import org.apache.ibatis.session.SqlSessionFactory;

public class GlobalManager {
	private static GlobalManager instance = null;
	public static void setInstance(GlobalManager instance) {
		GlobalManager.instance = instance;
	}
	public static GlobalManager getInstance() {//synchronized防止多线程错误  synchronized 
		if(instance == null){//第一次调用被实例化,以后再也不会被实例化了
			instance = new GlobalManager();
			instance.init();
		}
		return instance;
	}
	public SqlSessionFactory sqlSessionFactory;//全局sqlSessionFactory
	public void init(){
		sqlSessionFactory = (new SqlSesFacBuilder()).GetFactory();//获得一个SqlSessionFactory,对全局可见	
	}
}



SqlSesFacBuilder代码如下
package com.XXX.lib.global;

import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.XXX.lib.global.constant.MybatisConstant;

public class SqlSesFacBuilder {
	public SqlSessionFactory GetFactory(){
		SqlSessionFactory sqlSessionFactory=null;
		try{
			//配置路径
			String resource = MybatisConstant.MybatisResource;
			//加载配置文件
			Reader reader = Resources.getResourceAsReader(resource);
			//生成一个SqlSessionFactory
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		}catch(Exception e){
			e.printStackTrace();
		}
		return sqlSessionFactory;
	}
}


MybatisConstant如下
package com.XXX.lib.global.constant;

public class MybatisConstant {
	public final static String MybatisResource = "com/XXX/lib/mybatis/Configuration.xml";
}

SqlSessionProxy如下
package com.XXX.lib.global.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import com.XXX.lib.global.GlobalManager;

public class SqlSessionProxy implements InvocationHandler{
	private Object proxyobj;
	public SqlSessionProxy(Object obj){
		proxyobj = obj;
	}
	/**
	 * @param obj
	 * @return
	 * 静态工厂方法
	 */
	public static Object factory(Object obj){
		Object result = null;
		Class<?> cls = obj.getClass();
		result =  Proxy.newProxyInstance(cls.getClassLoader(), cls.getInterfaces(), new SqlSessionProxy(obj));
		return result;
	}
	/**
	 * Java反射方法
	 */
	public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {
		Object result;
		try{
			SqlSessionFactory sqlSessionFactory= GlobalManager.getInstance().sqlSessionFactory;     
            SqlSession sqlSession = sqlSessionFactory.openSession(true);//打开一个SqlSession,true代表自动提交
            args[0] = sqlSession;//改变第一个参数的值
            result = method.invoke(proxyobj, args);
            sqlSession.close();//关闭一个SqlSession
        }catch(InvocationTargetException e){
        	e.printStackTrace();
            throw e.getTargetException();
        }catch(Exception e){
        	e.printStackTrace();
            throw new RuntimeException("unexpected invocation exception: " + e.getMessage());
        }
        return result;
	}
}

一个mybatis配置实例如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.XXX.lib.fintface.common.CommonIntface">
	<select id="lodgCateList" parameterType="HashMap" resultType="HashMap">
               SELECT * FROM EMP
	</select>
</mapper>
分享到:
评论

相关推荐

    Struts+spring+mybatis

    总之,"Struts+Spring+Mybatis"的组合是Java Web开发中常见的一种技术栈,它将MVC架构、依赖注入和SQL操作有效地结合在一起,为开发者提供了一种强大且灵活的开发方式,适用于各种规模的项目。通过学习和实践这样的...

    Java Web框架例子合集(spring,springmvc,mybatis,struts2,hibernate)

    本合集包含了一些最流行的框架实例:Spring、SpringMVC、MyBatis、Struts2以及Hibernate。以下是对这些框架的详细介绍: 1. **Spring**: Spring 是一个全面的后端开发框架,它提供了依赖注入(DI)和面向切面编程...

    struts2 + spring + tiles + log4j blank framewotk

    Struts2、Spring、Tiles和Log4j是Java Web开发中的四大核心框架,它们共同构建了一个强大且灵活的基础架构,适用于构建复杂的企业级应用程序。以下将详细解释这四个框架及其在实际开发中的应用。 **Struts2框架**:...

    struts2 + Ibatis + spring + ajaxAnywhere 的框架

    Struts2还集成了许多其他框架,如Tiles、Freemarker等,提高了开发效率。 2. **iBatis**:iBatis是一个持久层框架,它简化了Java应用与数据库之间的交互。它允许开发者将SQL语句直接写在配置文件中,通过XML或注解...

    基于Struts2的个人信息管理系统

    结合Struts2的 Tiles 框架,我们可以实现布局管理和复用视图组件,提高开发效率。 此外,Struts2还提供了异常处理机制,使得程序能够优雅地处理运行时错误,并提供统一的错误页面。结合AOP(面向切面编程)的概念,...

    SSH2框架struts+spring+Hibernate

    在实际开发中,SSH2框架的使用还需要配合其他工具和库,如MyBatis(用于更灵活的SQL操作)、Apache Tiles(页面布局)、Freemarker或JSP(视图层模板引擎)等。此外,为了保证代码质量,开发者通常会引入单元测试...

    ssm:Spring+SpringMVC+MyBatis+Tiles整合框架

    **Tiles框架** 基于Struts的视图技术,它允许开发者定义页面布局,将页面拆分成多个组件(tiles),每个组件可以独立开发和重用。Tiles通过定义模板来组织页面结构,提高了页面的复用性和灵活性。 **SSM整合Tiles的...

    网上商城完整版(前后台) struts1+hibernate+spring

    标题中的“网上商城完整版(前后台) struts1+hibernate+spring”指的是一个基于Struts1、Hibernate和Spring框架开发的电子商务网站项目。这个项目提供了完整的前后台功能,意味着它包括了用户界面(前台)以及管理员...

    Struts2框架

    在实际开发中,Struts2可以与其他技术如Hibernate(ORM)、Spring(依赖注入)、MyBatis(SQL映射)等进行集成,构建出完整的Java EE应用。它的强大之处在于能够灵活地适应不同的项目需求,提供丰富的插件支持,以及...

    Struts2常用+其他jar包

    "Struts2常用+其他jar包"是学习和开发Struts2应用时所需的一组库文件,包含了Struts2框架的核心组件和其他辅助库。 首先,我们关注的是"struts2常用jar包.rar",这通常包含以下核心组件: 1. **struts2-core.jar**...

    struts2大全 MVC框架

    Struts2框架还支持多种插件和扩展,如Tiles2用于页面布局,Hibernate或MyBatis集成数据库操作,以及Spring的集成,增强企业级应用的能力。 Struts2框架的配置文件通常为struts.xml,其中定义了Action、Package、...

    struts2框架开发基本jar包

    在实际开发中,Struts2可以与Hibernate、MyBatis等ORM框架结合,实现数据持久化;配合Spring框架,实现依赖注入和事务管理;利用Tiles插件组织复杂的页面结构;通过JSON插件提供RESTful服务等。 ### 总结 Struts2...

    北大青鸟ACCP6.0 第三学期 Y2 JAVA方向 struts2框架

    Struts2框架是Java Web开发中的一个强大工具,由Apache软件基金会维护,是基于MVC(Model-View-Controller)设计模式的开源框架。在北大青鸟ACCP6.0第三学期Y2的JAVA方向课程中,Struts2被作为核心内容进行讲解,...

    struts+hibernate+mysql

    在OA系统中,Struts能够帮助开发者构建清晰的架构,通过Action类处理业务逻辑,使用Tiles或FreeMarker模板技术来组织和渲染视图,实现前后端的解耦,提高代码的可维护性和可扩展性。 Hibernate是一个对象关系映射...

    Apache Struts2是一个优雅的,可扩展的JAVA EE web框架

    Apache Struts2是一个高度灵活且功能丰富的JAVA EE(Java Platform, Enterprise Edition)Web应用程序框架,它的设计目标是为了简化开发过程并提高代码的可维护性。Struts2是Apache软件基金会旗下的一个开源项目,它...

    ss开发帮助文档

    在实际开发中,Struts2常与其他开源技术结合,如Hibernate进行持久化操作,Spring进行依赖注入和事务管理,构成SSH(Struts2 + Spring + Hibernate)或SSM(Struts2 + Spring + MyBatis)等经典企业级开发栈。...

    Struts2常用的包

    Struts2是一个强大的Java web应用程序框架,用于构建和部署可维护、高性能的MVC(Model-View-Controller)架构的应用程序。它继承了Struts1的优点,并在其基础上进行了改进,引入了许多新特性,提升了开发效率和灵活...

    struts2 in action

    《Struts2 in Action》是一本深入探讨Struts2框架的权威著作,旨在帮助开发者全面理解和熟练运用这一强大的Java Web开发框架。Struts2作为Apache软件基金会的一个项目,是MVC(模型-视图-控制器)设计模式在Web应用...

    <<深入浅出Struts 2>>中文版 下载

    Struts 2是Java Web开发中的一个热门框架,它提供了强大的MVC(Model-View-Controller)架构支持,极大地简化了Web应用的开发工作。通过阅读本书,读者可以深入了解Struts 2的核心概念和实践技巧。 描述中提到的...

    struts2 教学管理系统(含数据库)

    Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中,为构建企业级应用提供了高效且灵活的解决方案。本教学管理系统是基于Struts2框架实现的,旨在帮助开发者理解并掌握Struts2的核心...

Global site tag (gtag.js) - Google Analytics