SSM整合

1.MyBatis和Spring的集成工作是由MyBatis团队完成的

A.SqlSessionFactoryBean

B.MapperFactoryBean(用的频率较少)

C.MapperScannerConfigurer

 

 

 

 

在需要被扫描的mapper接口上添加注解

设置annotationClass属性

MyBatis会自动扫描com.zr包下的所有接口,遇到带MyBatisMapper注解标记的将自动被MapperFactoryBean当做Mapper组件注册

2.spring与MyBatis整合

A.配置db.properties提供数据库连接的基本数据

B.spring-db.xml文件配置数据库连接

   配置数据库连接池、配置SqlSessionFactoryBean、 配置SqlSessionFactory、配置Mapper扫描

spring-db.xml

    <!-- 整合spring 和 mybatis -->
    <!-- 1.配置数据源 -->
    <util:properties id="props" location="classpath:db.properties"></util:properties>
    <bean id="ds" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="#{props.driver}"></property>
        <property name="url" value="#{props.url}"></property>
        <property name="username" value="#{props.username}"></property>
        <property name="password" value="#{props.password}"></property>
        
        <!-- 初始化连接数、最小、最大连接数设置 -->
        <property name="initialSize" value="1"></property>
        <property name="minIdle" value="1"></property>
        <property name="maxActive" value="20"></property>
        <!-- 连接的等待超时 -->
        <property name="maxWait" value="60000"></property>
        <!-- 自动扫描  关闭空闲连接 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000"></property>
        <!-- 设置最小生存时间 -->
        <property name="minEvictableIdleTimeMillis" value="30000"></property>
    </bean>
    
    <!-- 2.配置 SqlSessionFactoryBean   该bean是spring用来生产SqlSession(sql会话)对象的工厂
        替代mybatis原来sqlSessionFactory,id建议使用sqlSessionFactory
     -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 数据源 -->
        <property name="dataSource" ref="ds"></property>
        <!-- 设置读取mybatis主配置文件   该配置可以设置也可以不设 -->
        <!-- <property name="configLocation" value="classpath:mybatis-config.xml"></property> -->
        <!-- 以属性配置的方式  替代原有的mybatis主配置文件的设置 -->
        <!-- 设置别名 -->
        <property name="typeAliasesPackage" value="com.rong.entity"></property>
        <!-- 设置引入哪些   mapper映射配置文件 -->
        <property name="mapperLocations" value="classpath:com/rong/dao/*.xml"></property>
    </bean>
    
    <!-- 3.配置   Mapper接口的代理类的创建工厂 MapperFactoryBean或MapperScannerConfigurer  -->
    <!-- <bean id="mapperFactoryBean" class="org.mybatis.spring.mapper.MapperFactoryBean">
        指定会话工厂 
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
        指定哪些mapper接口 需要创建代理子类
        <property name="mapperInterface" value="com.rong.dao.PrivilegeMapper"></property>
    </bean> -->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!-- 指定持久化层的需要生成代理子类对象的  包的位置 -->
        <property name="basePackage"  value="com.rong.dao"></property>
        <!-- 指定会话工厂    可以省略,spring会自动的通过Autoware(自动装配)进行注入-->
        <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> -->
        <!--过滤生成动态代理类的步骤: 
            1.设置自定义注解
            2.在需要生成代理子类的mapper接口上添加注解
         -->
        <property name="annotationClass" value="com.rong.annotation.MyBatisAnnotation"></property>
    </bean>

3.SSM整合

A.配置web.xml(spring-mvc配置)

B.spring-mvc.xml

C.spring-tx.xml

    <!-- 开启ssm的事务支持   所有原底层api的自动提交会失效 -->
    
    <!-- 1.配置事务管理器 -->
    <bean id="tx" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <!-- 配置事务管理器的数据源属性 -->
        <property name="dataSource" ref="ds"></property>
    </bean>
    <!-- 2.配置事务管理策略 -->
    <tx:advice id="txAdvice" transaction-manager="tx">
        <tx:attributes>
            <tx:method name="find*" propagation="REQUIRED" read-only="true"/>
            <!-- <tx:method name="select*" propagation="REQUIRED" read-only="true"/> -->
            <tx:method name="*" propagation="REQUIRED" read-only="false" rollback-for="Exception"/>
        </tx:attributes>
    </tx:advice>
    
    <!-- 3.配置事务管理切面配置
        事务从服务层开始控制
     -->
    <aop:config proxy-target-class="true">
        <aop:advisor advice-ref="txAdvice" pointcut="within(com.rong.service.*)"/>
    </aop:config>

D.spring-db.xml(SM整合)

E.spring-ssm.xml

<!-- 引入其他  配置xml文件  按照不同的功能划分xml配置文件-->
    <import resource="spring-db.xml"/>
    <import resource="spring-mvc.xml"/>
    <import resource="spring-tx.xml"/>

F.entity、dao、service、controller实现

 

posted @ 2017-11-26 15:23  57容杰龙  阅读(216)  评论(0编辑  收藏  举报