推荐的文件分层结构如下
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"的组合是Java Web开发中常见的一种技术栈,它将MVC架构、依赖注入和SQL操作有效地结合在一起,为开发者提供了一种强大且灵活的开发方式,适用于各种规模的项目。通过学习和实践这样的...
本合集包含了一些最流行的框架实例:Spring、SpringMVC、MyBatis、Struts2以及Hibernate。以下是对这些框架的详细介绍: 1. **Spring**: Spring 是一个全面的后端开发框架,它提供了依赖注入(DI)和面向切面编程...
Struts2、Spring、Tiles和Log4j是Java Web开发中的四大核心框架,它们共同构建了一个强大且灵活的基础架构,适用于构建复杂的企业级应用程序。以下将详细解释这四个框架及其在实际开发中的应用。 **Struts2框架**:...
Struts2还集成了许多其他框架,如Tiles、Freemarker等,提高了开发效率。 2. **iBatis**:iBatis是一个持久层框架,它简化了Java应用与数据库之间的交互。它允许开发者将SQL语句直接写在配置文件中,通过XML或注解...
结合Struts2的 Tiles 框架,我们可以实现布局管理和复用视图组件,提高开发效率。 此外,Struts2还提供了异常处理机制,使得程序能够优雅地处理运行时错误,并提供统一的错误页面。结合AOP(面向切面编程)的概念,...
在实际开发中,SSH2框架的使用还需要配合其他工具和库,如MyBatis(用于更灵活的SQL操作)、Apache Tiles(页面布局)、Freemarker或JSP(视图层模板引擎)等。此外,为了保证代码质量,开发者通常会引入单元测试...
**Tiles框架** 基于Struts的视图技术,它允许开发者定义页面布局,将页面拆分成多个组件(tiles),每个组件可以独立开发和重用。Tiles通过定义模板来组织页面结构,提高了页面的复用性和灵活性。 **SSM整合Tiles的...
标题中的“网上商城完整版(前后台) struts1+hibernate+spring”指的是一个基于Struts1、Hibernate和Spring框架开发的电子商务网站项目。这个项目提供了完整的前后台功能,意味着它包括了用户界面(前台)以及管理员...
在实际开发中,Struts2可以与其他技术如Hibernate(ORM)、Spring(依赖注入)、MyBatis(SQL映射)等进行集成,构建出完整的Java EE应用。它的强大之处在于能够灵活地适应不同的项目需求,提供丰富的插件支持,以及...
"Struts2常用+其他jar包"是学习和开发Struts2应用时所需的一组库文件,包含了Struts2框架的核心组件和其他辅助库。 首先,我们关注的是"struts2常用jar包.rar",这通常包含以下核心组件: 1. **struts2-core.jar**...
Struts2框架还支持多种插件和扩展,如Tiles2用于页面布局,Hibernate或MyBatis集成数据库操作,以及Spring的集成,增强企业级应用的能力。 Struts2框架的配置文件通常为struts.xml,其中定义了Action、Package、...
在实际开发中,Struts2可以与Hibernate、MyBatis等ORM框架结合,实现数据持久化;配合Spring框架,实现依赖注入和事务管理;利用Tiles插件组织复杂的页面结构;通过JSON插件提供RESTful服务等。 ### 总结 Struts2...
Struts2框架是Java Web开发中的一个强大工具,由Apache软件基金会维护,是基于MVC(Model-View-Controller)设计模式的开源框架。在北大青鸟ACCP6.0第三学期Y2的JAVA方向课程中,Struts2被作为核心内容进行讲解,...
在OA系统中,Struts能够帮助开发者构建清晰的架构,通过Action类处理业务逻辑,使用Tiles或FreeMarker模板技术来组织和渲染视图,实现前后端的解耦,提高代码的可维护性和可扩展性。 Hibernate是一个对象关系映射...
Apache Struts2是一个高度灵活且功能丰富的JAVA EE(Java Platform, Enterprise Edition)Web应用程序框架,它的设计目标是为了简化开发过程并提高代码的可维护性。Struts2是Apache软件基金会旗下的一个开源项目,它...
在实际开发中,Struts2常与其他开源技术结合,如Hibernate进行持久化操作,Spring进行依赖注入和事务管理,构成SSH(Struts2 + Spring + Hibernate)或SSM(Struts2 + Spring + MyBatis)等经典企业级开发栈。...
Struts2是一个强大的Java web应用程序框架,用于构建和部署可维护、高性能的MVC(Model-View-Controller)架构的应用程序。它继承了Struts1的优点,并在其基础上进行了改进,引入了许多新特性,提升了开发效率和灵活...
《Struts2 in Action》是一本深入探讨Struts2框架的权威著作,旨在帮助开发者全面理解和熟练运用这一强大的Java Web开发框架。Struts2作为Apache软件基金会的一个项目,是MVC(模型-视图-控制器)设计模式在Web应用...
Struts 2是Java Web开发中的一个热门框架,它提供了强大的MVC(Model-View-Controller)架构支持,极大地简化了Web应用的开发工作。通过阅读本书,读者可以深入了解Struts 2的核心概念和实践技巧。 描述中提到的...
Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中,为构建企业级应用提供了高效且灵活的解决方案。本教学管理系统是基于Struts2框架实现的,旨在帮助开发者理解并掌握Struts2的核心...