记录一次使用@Configuration自定义DefaultSqlSessionFactory对象

背景:自定义的组件已经加载了DefaultSqlSessionFactory,并且对其进行了包装,在application.yaml中配置的有些选项无法起作用,无论是通过xml配置再加载,还是单个配置项再加载都不起作用。

mybatis:
    basePackage: com.cvte.mapper # 多个逗号隔开
    xmlLocation: classpath:mapper/**/*.xml
    #选填,若需要就写上 否则 注释掉
    typeAliasesPackage: com.cvte.demotest.entity
#    config-location: classpath:mybatis-config/mybatis-global-config.xml 不起作用
#    mapUnderscoreCamelCase: true 不起作用

由于项目已经加载了DefaultSqlSessionFactory,因此,只需要通过上下文获取该对象,再对其的Configuration对象进行修改即可。
具体为:通过@Configuration自动加载进行,需要注意该组件要在加载DefaultSlSessionFactory所在组件起作用之后再加载,因此需要在类上面添加@AutoConfigureAfter注解。

/**
     * 修改DefaultSqlSessionFactory的mapUnderscoreToCamelCase
     * @param sqlSessionFactory
     */
    @Autowired
    public GlobalMvcConfiguration(SqlSessionFactory sqlSessionFactory) {
        DefaultSqlSessionFactory defaultSqlSessionFactory = null;
        if(sqlSessionFactory instanceof DefaultSqlSessionFactory) {
            defaultSqlSessionFactory = (DefaultSqlSessionFactory) sqlSessionFactory;
            defaultSqlSessionFactory.getConfiguration().setMapUnderscoreToCamelCase(true);
            System.out.println(1111);
        }else {
            defaultSqlSessionFactory = new DefaultSqlSessionFactory(new org.apache.ibatis.session.Configuration());
            System.out.println(2222);
        }

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值