就不用Spring,Struts2挂载MyBatis

2 篇文章 0 订阅
1 篇文章 0 订阅
本文介绍了如何在不使用Spring的情况下,将MyBatis集成到Struts2项目中。通过Struts2的依赖注入模块,实现动态加载Bean和常量,避免了Spring的复杂性。文中提供了具体的步骤,包括创建SqlSessionFactoryBuilder,定制Action基类,以及Struts.xml的配置。总结指出,这种方式允许动态加载Bean和常量,@inject注解可用于简单应用,且Struts2 Action的线程安全性与MyBatis SqlSession的使用注意事项。
摘要由CSDN通过智能技术生成

Hibernate,为了DAO的ORMapping,生生把SQL的优良特性给腰斩完蛋了。比起来更喜欢MyBatis,不失SQL的灵活。

但,MyBatis怎么挂载到Struts2中呢?搜遍大江南北都是利用Spring——你们还有没有点新鲜玩意儿?说白了,就是我这个小小的项目用Sping不是杀鸡用牛刀吗,而且Sping的复杂度让人望而却步。

研究了一下发现不过是利用Sping的DI加载MyBatis模块。赵本山说了,别控制!

查了一下Struts2自带Dependency Injection别控制模块,和Google的Dependency Injection框架Guice(发音:果汁)出自同人之手。何不拿来一用涅?

关子卖光了,下面是解决方法:

 

1.先来个自制MyBatis的SqlSessionFactoryBuilder

public class PointSqlSessionFactoryBuilder {

    private SqlSessionFactory sqlFactory;

    public SqlSessionFactory getSqlFactory() {
        return sqlFactory;
    }

    // 注入配置文件的地址
    @Inject("point.resource.db")
    public PointSqlSessionFactoryBuilder(String resource) throws IOException {
        Reader reader = Resources.getResourceAsReader(resource);
        sqlFactory = new SqlSessionFactoryBuilder().build(reader);
    }
}



2.再来个自制的Action基类

public class PointActionSupport extends ActionSupport {
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    // 注入已构建的SqlSessionFactoryBuilder
    @Inject("SqlSessionFactoryBuilder")
    private PointSqlSessionFactoryBuilder sqlFactoryBuilder;

    // 打开连接
    protected SqlSession openSqlSession() {
        return sqlFactoryBuilder.getSqlFactory().openSession();
    }

}


 

Struts.xml中追加注入信息:

数据库配置文件地址

单例模式配置MyBatis数据连接工厂


    <constant name="point.resource.db" value="com/point/db/SQLMapConfig.xml" /> 
    <bean
      name="SqlSessionFactoryBuilder"
      class="com.point.common.core.PointSqlSessionFactoryBuilder"
      scope="singleton"
    />


 

大功告成!启动后,MyBatis模块被自动加载,可以使用Mapper啦!

 

 

总结:

1.用Struts的依赖注入模块,可以动态加载自己的Bean和常量。常看到有人问是否可以定义什么常量然后读取(比如文件上传下载的后缀等),看来是可以的。

2.@inject可以在变量,方法,构造函数上使用。满足简单的应用,没问题。

3.Struts2中Action都是线程安全的,因此本构造应该不存在线程安全问题。

4.MyBatis的SqlSession是线程不安全的,应该随取随用随丢。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值