Spring整合Struts2和MyBatis

Struts2整合Struts

  1.        添加Spring 以及 Struts 的 jar
           必须添加由 Struts2提供的 Struts整合Spring 的 struts-spring-plugin.jar
  2.        做初始化配置 在web.xml 文件里面做初始化配置
           i.  struts2 的 filter ( 核心控制器 )

           ii. 配置Spring 让项目启动的时候,通过web应用服务器来帮我们创建一个Spring容器。
           实际意义:配置spring后,在服务器启动的时候,会在家spring配置文件,创建spring容器。

           iii. 由 spring 创建 action 对象,然后把该对象(bean的id)交给struts2使用
              (就是让 struts.xml 标签的 action标签的class属性使用,class的值写spring容器
                  创建的action对象  写bean的id )

           iv. 如果struts2需要按照类型自动装配spring容器bean标签的id,那么就需要在struts.xml
          文件中配置<constant name="struts.objectFactory.spring.autoWire" value="type" />
    <constant name="struts.objectFactory.spring.autoWire" value="type" />
                    value="name" 是按照 bean 标签的 id 来匹配


     


Struts2整合MyBatis

  1.       配置数据源
  2.       在spring容器中配置 SqlsessionFactoryBean
               i.  通过SqlsessionFactoryBean的属性dataSource注入数据源
    <property name="dataSource" ref="数据源/dataSource" />

              ii.  通过SqlsessionFactory的属性mapperlocations加载映射文件(mapper文件)

    <property name="mapperLocations">
        <list>
            <!-- * 代表加载改为之下的所有 Mapper.xml文件  -->
            <value>classpath:com/ssdemo/dao/*Mapper.xml</value>
        </list>
    </property>

               iii.  通过SqlsessionFactory的属性 typeAliasesPackage给指定包下的所有
                     实体类起别名,别名就是类名,是由spring容器自动创建的(可写可不写)

        <!-- entity 下的所有类起别名
        比如该包下有 com.ssdemo.entity.Book 类  那么别名是 Book 
        -->
    <property name="typeAliasesPackage" value="com.ssdemo.entity" ></property>

               iv.  通过Spring容器创建 MapperScannerConfigUrer对象,
                     再给该对象的属性basePackage赋值,值是dao包的路径(看自己的项目写),
                     该操作是扫描该路径的所有接口,并生成接口的代理对象,
                     代理对象的名字是 :接口名(开头小写),由spring容器自动生成的。

    <!--  使用 Spring把所有指定位置的Dao接口 生成 该接口的代理对象   -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--  加载该包下面的所有接口,然后自动的动态生成接口的代理对象
        类似于 sqlsession.getMapper(BookDao.class);
    
        那么动态生成的代理对象名字是什么呢?
        例: com.ssdemo.dao.BookDao  那么名字就是  bookDao
        -->
        <property name="basePackage" value="com.ssdemo.dao"></property>
    </bean>

                v.  如果代理对象对应多个工厂的时候,就需要使用sqlSessionFactoryBeanName
                    属性  值是 SqlSessionFactoryBean 的对象 (bean标签的id)

    <property name="sqlSessionTemplateBeanName" ref="sqlSessionFactory工厂的bean标签 id"></property>

                vi.  事务处理:声明式事务处理

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值