Spring与Mybatis的整合

首先Spring和Mybatis整合,需要将两个对象交给spring容器管理:SQLSessionFactoryBean和mapper代理
配置式
1.spring配置文件,相应的mybatis中只需要注册映射文件就好

<!--加载jdbc属性文件-->
    <context:property-placeholder location="jdbc.properties"/>
    <!--注册C3P0数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>
    <!--注册SQLSessionFactoryBean-->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="mybatis.xml"></property>
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--获取mapper代理对象 MapperScannerConfigurer-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"></property>
        <property name="basePackage" value="com.bjsxt.mapper"></property>
    </bean>
    <!--注册Service-->
    <bean id="fundServiceImpl" class="com.bjsxt.service.impl.FundServiceImpl">
        <property name="accountaccountMapper" ref="accountMapper"></property>
        <property name="fundMapper" ref="fundMapper"></property>
    </bean>
    <!--注册事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--注册事务通知-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <!--设置事务属性-->
        <tx:attributes>
            <!--连接点-->
            <tx:method name="buyFund" isolation="DEFAULT" propagation="REQUIRED" rollback-for="FundException"/>
        </tx:attributes>
    </tx:advice>
    <!--AOP配置-->
    <aop:config>
        <aop:pointcut id="fundPC" expression="execution(* *..service.*.buyFund(..))"></aop:pointcut>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="fundPC"></aop:advisor>
    </aop:config>

注解式
spring配置文件

<!--加载jdbc属性文件-->
    <context:property-placeholder location="jdbc.properties"/>

    <!--注册C3P0数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <!--注册SQLSessionFactoryBean-->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="mybatis.xml"></property>
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!--获取mapper代理对象 MapperScannerConfigurer-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"></property>
        <property name="basePackage" value="com.bjsxt.mapper"></property>
    </bean>

    <!--注册Service-->
    <bean id="fundServiceImpl" class="com.bjsxt.service.impl.FundServiceImpl">
        <property name="accountaccountMapper" ref="accountMapper"></property>
        <property name="fundMapper" ref="fundMapper"></property>
    </bean>

    <!--注册事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--注册事物注解驱动-->
    <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>

mapper 接口中要注解不再使用mapper配置文件

public interface AccountMapper {
    @Update("update account set balance=balance-#{balance} where aname=#{aname}")
    //修改
    void updateAccount(Account account);
}

业务层进行注解

@Service("fundServiceImpl")
public class FundServiceImpl implements FundService {
    @Autowired
    private AccountMapper accountaccountMapper;
    @Autowired
    private FundMapper fundMapper;

    public AccountMapper getAccountaccountMapper() {
        return accountaccountMapper;
    }

    public void setAccountaccountMapper(AccountMapper accountaccountMapper) {
        this.accountaccountMapper = accountaccountMapper;
    }

    public FundMapper getFundMapper() {
        return fundMapper;
    }

    public void setFundMapper(FundMapper fundMapper) {
        this.fundMapper = fundMapper;
    }

    @Override
    public void buyFund(Account account, Fund fund) throws Exception {
        accountaccountMapper.updateAccount(account);
        fundMapper.updateFund(fund);
    }
}

OK了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值