• 九、开启声明式事务


    package com.biniu.config;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import com.github.pagehelper.PageHelper;
    import org.apache.ibatis.plugin.Interceptor;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    import org.springframework.transaction.PlatformTransactionManager;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    import org.springframework.transaction.annotation.TransactionManagementConfigurer;
    
    import javax.sql.DataSource;
    import java.util.Properties;
    
    /**
     * mybatis配置文件
     * @author lay
     * @date 2018/4/23.
     * @time 15:01
     */
    @Configuration
    @EnableTransactionManagement
    @MapperScan(basePackages = "com.biniu.dao")
    public class MyBatisConfig implements TransactionManagementConfigurer {
    
        @Autowired
        private DataSource dataSource;
    
        @Bean
        public SqlSessionFactory sqlSessionFactory() throws Exception {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            // 数据源
            bean.setDataSource(dataSource);
            // sql文件
            bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
            // 分页插件
            PageHelper pageHelper = new PageHelper();
            Properties properties = new Properties();
            // 禁用分页参数合理化
            properties.setProperty("reasonable", "false");
            properties.setProperty("supportMethodsArguments", "true");
            properties.setProperty("returnPageInfo", "check");
            properties.setProperty("params", "count=countSql");
            properties.setProperty("helperDialect", "mysql");
            pageHelper.setProperties(properties);
            bean.setPlugins(new Interceptor[]{pageHelper});
            return bean.getObject();
        }
    
        @Bean
        @ConfigurationProperties(prefix = "spring.datasource")
        public DataSource dataSource() {
            return new DruidDataSource();
        }
    
        /**
         * 事务注入数据源
         * @return
         */
        @Override
        public PlatformTransactionManager annotationDrivenTransactionManager() {
            return new DataSourceTransactionManager(dataSource);
        }
    }

    springboot开启声明式事务很简单:

    1)注解: @EnableTransactionManagement

    2) 实现:TransactionManagementConfigurer接口

    3)注入数据源

    注意:如果存在多数据源的情况,只能指定一个数据源开启声明式事务,否则会报错

  • 相关阅读:
    sqlserver还原差异备份
    Hibernate关联关系配置(一对多、一对一和多对多)
    防止用户重复提交表单数据,session方式,js方式
    poi中文api文档
    使用poi调整字体格式、添加单元格注释、自动调整列宽
    jQuery中的几个案例:隔行变色、复选框全选和全不选
    使用poi统计工作职责
    文件上传框的美化+预览+ajax
    web.xml配置文件详解
    findBug 错误修改指南
  • 原文地址:https://www.cnblogs.com/lay2017/p/8919994.html
Copyright © 2020-2023  润新知