代码改变世界

总结Struts2+Spring+MyBaties整合

2014-01-07 11:30  _cha1R  阅读(908)  评论(0编辑  收藏  举报

本文适合有过SSH配置经验的开发者参考。

由于项目需要用到MyBaties,所以最近在学习这。发现Struts+Spring+MyBaties整合起来跟以前使用的SSH整合有几分相似。

1、MyBaties配置文件仅剩2项配置

<configuration>
    <typeAliases>
        <typeAlias alias="user" type="com.pdsu.edu.domain.User"/>
    </typeAliases>
    <mappers>
        <mapper resource="com/pdsu/edu/domain/sqlMappers/user.xml" />
    </mappers>
</configuration>    

而之前学习MyBaties时,数据库项的配置是配在MyBaties配置文件里面的,现在交给了Spring来管理数据项配置

 <!-- 数据库配置文件位置 -->
 <context:property-placeholder location="classpath:jdbc.properties" />

而jdbc.properties则是分出来的配置,因为我们说过数据项的配置最好是分出来的,这点跟之前学习MyBaties一样,不过这次是在beans.xml引用了这个数据库配置文件。

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/operationLog
jdbc.username=root
jdbc.password=root
jdbc.maxActive = 2
jdbc.maxIdle =5
jdbc.minIdle=1
jdbc.initialSize =3
jdbc.maxWait =3000

2、SqlSession的不再由mybaties的SqlSessionFactory提供,而交给了Spring管理。

在Spring中,SqlSessionFactory被org.mybatis.spring.SqlSessionFactoryBean代替,我们可以调用它的getObject()方法获得SqlSessionFactroy实例从而得到SqlSession。

    <!-- 配置mybitasSqlSessionFactoryBean -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:mybatis.xml"></property>
    </bean>

配置SqlSessionFactoryBean可以指定两个属性,一个是configLoaction,把它指向MyBaties的配置文件即可。还有一个是dataSource,配置数据源。配置完毕后我们就可以使用SqlSessionFactoryBean。

3、接口方面,之前学习MyBaties时是写了Mapper接口来映射方法。这里不再使用,而是由Spring提供的一个模板类org.mybatis.spring.SqlSessionTemplate完成接口,这个模板类实现了org.apache.ibatis.session.SqlSession类,所以它拥有SqlSession的所有方法,我们可以把它当成MyBaties的SqlSession使用。

使用它之前,需要配置一下,把之前的SqlSessionFactoryBean注入去即可

    <!-- 配置SqlSessionTemplate -->
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
    </bean>

struts2配置、web.xml、Spring事务管理则跟SSH的配置一致。