package pwc.taxtech.atms;

import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisConfig implements InitializingBean {
    private static final String BASE_PACKAGE = "pwc.taxtech.atms";
    private static Logger logger = LoggerFactory.getLogger(MybatisConfig.class);

    @Override
    public void afterPropertiesSet() throws Exception {
        logger.debug("init");
    }

    @Bean
    public static MapperScannerConfigurer userMapperConfigurer() {
        MapperScannerConfigurer bean = new MapperScannerConfigurer();
        bean.setMarkerInterface(MyMapper.class);
        bean.setBasePackage(BASE_PACKAGE);
        bean.setSqlSessionTemplateBeanName("sqlSessionTemplate");
        // bean.setSqlSessionFactoryBeanName("sqlSessionFactory");
        return bean;
    }

    @Bean
    public static MapperScannerConfigurer vatMapperConfigurer() {
        MapperScannerConfigurer bean = new MapperScannerConfigurer();
        bean.setMarkerInterface(MyVatMapper.class);
        bean.setBasePackage(BASE_PACKAGE);
        bean.setSqlSessionTemplateBeanName("dynamicSqlSessionTemplate");
        return bean;
    }

    @Bean
    public static MapperScannerConfigurer userMapperConfigurerMail() {
        MapperScannerConfigurer bean = new MapperScannerConfigurer();
        bean.setMarkerInterface(MyMailMapper.class);
        bean.setBasePackage(BASE_PACKAGE);
        bean.setSqlSessionTemplateBeanName("sqlSessionTemplateMail");
        // bean.setSqlSessionFactoryBeanName("sqlSessionFactoryMail");
        return bean;
    }
}