美文网首页
2020-02-29

2020-02-29

作者: 紫簌丶 | 来源:发表于2020-02-29 19:59 被阅读0次

package com.zxp.user.config;

import java.util.Properties;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;
import org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
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.interceptor.TransactionInterceptor;

@Configuration
@EnableTransactionManagement
public class DataSourceConfig {

    @Bean(name = "sqlSessionFactory")
    @Primary
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().
getResources("classpath*:mybatis/mappers/**/*Mapper.xml"));
        bean.setConfigLocation(new PathMatchingResourcePatternResolver().
getResource("classpath:mybatis/mybatis-config.xml"));
        return bean.getObject();
    }
    @Bean(name = "sqlSessionTemplate")
    @Primary
    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("sqlSessionFactory") 
SqlSessionFactory sqlSessionFactory)
 throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
    
    
    @Bean(name = "transactionManager")
    @Primary
    public DataSourceTransactionManager transactionManager(DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
    @Bean(name = "transactionInterceptor")
    public TransactionInterceptor transactionInterceptor(
PlatformTransactionManager platformTransactionManager) {
        TransactionInterceptor transactionInterceptor = new TransactionInterceptor();
        // 事物管理器
        transactionInterceptor.setTransactionManager(platformTransactionManager);
        Properties transactionAttributes = new Properties();
        // 新增
        transactionAttributes.setProperty("insert*", "PROPAGATION_REQUIRED,-Throwable");
        transactionAttributes.setProperty("save*", "PROPAGATION_REQUIRED,-Throwable");
        transactionAttributes.setProperty("add*", "PROPAGATION_REQUIRED,-Throwable");
        // 修改
        transactionAttributes.setProperty("update*", "PROPAGATION_REQUIRED,-Throwable");
        // 删除
        transactionAttributes.setProperty("delete*", "PROPAGATION_REQUIRED,-Throwable");
        transactionAttributes.setProperty("del*", "PROPAGATION_REQUIRED,-Throwable");
        //查询
        transactionAttributes.
setProperty("select*", "PROPAGATION_REQUIRED,-Throwable,readOnly");
        transactionInterceptor.setTransactionAttributes(transactionAttributes);
        return transactionInterceptor;
    }
    //代理到ServiceImpl的Bean
    @Bean
    public BeanNameAutoProxyCreator transactionAutoProxy() {
        BeanNameAutoProxyCreator transactionAutoProxy = new BeanNameAutoProxyCreator();
        transactionAutoProxy.setProxyTargetClass(true);
        transactionAutoProxy.setBeanNames("*ServiceImpl", "*Service");
        transactionAutoProxy.setInterceptorNames("transactionInterceptor");
        return transactionAutoProxy;
    }
    
    
    //下划线模式和驼峰模式之间转换
    @Bean
    public ConfigurationCustomizer mapUnderscoreToCamelCaseConfiguration() {
         return new ConfigurationCustomizer() {
             public void customize(org.apache.ibatis.session.Configuration configuration) {
                  configuration.setMapUnderscoreToCamelCase(true);
             }
         };
    }
}






相关文章

  • 学习方法(3.高效)

    学习方法(3.高效) 骂我靓仔 字数 1062 · 阅读 6 2020-02-29 18:27 提升自己的4个思路...

  • 赋能

    中原焦点团队 高艳峰 信阳 网络中级九期 坚持分享第697天 2020-02-29 以赋能为基础目标的...

  • 从文科生到编程高手,你只差一个Python!

    ✎ 简哥Wicker 2020-02-29 周六 晚上 22:55 晴 西安 编程原来如此好玩,一不小心会上瘾。 ...

  • 精读君…50岁胡兵同框陈冠希:纵欲过度,只会慢慢榨干你(自律,标

    50岁胡兵同框陈冠希:纵欲过度,只会慢慢榨干你 精读君 观察优秀作者2020-02-29 10:46 前段时间,...

  • 加入了怀左学长零基础写作营

    2020-02-29 天气阴 心情可 正式加入了怀左学长的零基础写作营,已经进了群,一共有一百多名小伙...

  • 苏思羽—2020.02月度检视

    苏思羽 2020-02-29 20:05 没有反思的人生不值得过! 【2020年2月目标及完成情况】 一、健康 1...

  • 【茶修日志】2020-02-29

    【茶修日志】心雅 茶修:第N天 2020-02-29 第十二次 茶品:生普、年份:不详、产地:云南 今日算得上是一...

  • 2020-02-29

    2020-02-29 星期日 一、亿万富翁制造机分享 早上起床照镜子,看着自己的眼睛:美女,早上好!我爱你。吻! ...

  • 2020-02-29

    2020-02-29 戒烟进行时,第17天。 三个星期,到3月5日。 吸烟不是一种习惯,而是尼古丁上瘾。更是心理上...

  • 回家吃艾米果

    最美不过三月天 杜鹃花燃回井冈 昨夜阿玲来视频 隔屏嗅到艾饼香 2020-02-29吉安 今年第一次回家

网友评论

      本文标题:2020-02-29

      本文链接:https://www.haomeiwen.com/subject/mwomhhtx.html