Spring 整合Mybatis配置

Spring 整合Mybatis配置

一、配置数据库

  1. 配置数据源,加载驱动。

    <!-- 将properties文件加载进spring容器中 -->
    <context:property-placeholder location="dbConfig.properties"/>
    <!-- 配置数据源,加载驱动 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${driverClassName}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
    </bean>
    
  2. 配置SqlSessionFactory

    <!-- SqlSessionFactory 通常不需要Mybatis xml配置文件,SqlSessionFactory会自动创建自有的Mybatis环境配置。 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.sean.hr.domain"/>
    </bean>
    
  3. 配置Mapper自动扫描。Mapper配置会负责管理SqlSession的打开和关闭,如果有使用Spring的事务功能,那么事务完成时,session会被自动的提交或者回滚。

    <!-- 给定一个包,MapperScanner会自动将包下的Mapper配置类和dao类进行配置 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.sean.hr.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>
    
    • 为什么要配置这个:
      在这里插入图片描述
      以mybatis官方的代码为例子,每次我们配置了一个Mapper都要创建一个MapperFactoryBean,这样肯定会增加我们代码量,以及维护量。

      使用MapperScannerConfigurer,我们只要给定一个路径,它将会扫描这个包下所有的Mapper和Dao层底下的类,为它们创建各自接口的动态代理类。

    • **注意:**Mapper的全路径必须等同于dao层的路径,不然MapperScannerConfigurer无法将它们绑定,然后创建动态代理。

二、 配置声明式事务

  1. 创建DataSourceTransactionManager事务管理器

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    	<property name="dataSource" ref="dataSource"/>
    </bean>
    
  2. 配置事务属性

    <!-- 定义事务通知 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!-- 根据方法名来设置事务属性 -->
            <tx:method name="get*" read-only="true"/>
            <tx:method name="find*" read-only="true"/>
            <tx:method name="select*" read-only="true"/>
            <tx:method name="list*" read-only="true"/>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>
    
  3. 配置切面

    <aop:config>
        <aop:pointcut id="txPointcut" expression="execution(* com.sean.hr.service.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
    </aop:config>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值