psringboot项目数据库连接配置类

 *
 * 例如设置url,DruidDataSource内部url的字段为jdbcUrl,但对应的set方法为setUrl,因此配置的key为vivo.jdbc.demo.dataSource.url。
 * <p>
 * 如果要构建多个DataSource(如连多个数据库),请写多个类似的DataSourceWrapper类,并使用不同的配置前缀用以区分,比如这里的配置前缀是jdbc.demo
 * <p>
 * 如果是纯粹的spring环境,此处请主动取配置值,然后设置到DruidDataSource
 	jdbc.xxxx:前缀,会读取该前缀的配置并设置到DruidDataSource中,比如 用户名、密码、url
 */
@ConfigurationProperties("jdbc.xxxx")
public class ApptrackDbDataSourceWrapper {

    private final DruidDataSource dataSource = new DruidDataSource();

    //需提供get方法,用于spring boot注入属性时获取复杂对象类型的属性
    public DruidDataSource getDataSource() {
        return dataSource;
    }
}
 * 如果是连接多个数据库,建议每个数据库一个此配置类
 */
@Slf4j
@Configuration
@EnableConfigurationProperties(xxxxDbDataSourceWrapper.class)
@Import(xxxxMybatisConfiguration.xxxDaoAutoGenerator.class)
public class xxxMybatisConfiguration {
    private static final String SQL_SESSION_FACTORY_BEAN_NAME = "apptrackSqlSessionFactory";

    /**
     * 定义 initMethod字段,使用前初始化。
     * 入参wrapper如果需要指定bean的名字,根据spring boot生成规则,其bean的name为'配置前缀'-'类全限定名
     */
    @Primary
    @Bean(name = "xxxDataSource")
    public DataSource dataSource(ApptrackDbDataSourceWrapper wrapper) {
        CheckUtil.checkJarConflict();
        log.info("xxxDataSource url:{}", wrapper.getDataSource().getUrl());
        return wrapper.getDataSource();
    }

    /**
     * 提倡尽可能少的xml配置,所以以下只设置了sql映射文件的地址,不设置mybatis-config.xml文件
     */
    @Bean(SQL_SESSION_FACTORY_BEAN_NAME)
    public SqlSessionFactory sqlSessionFactory(@Qualifier("xxxDataSource") DataSource ds) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        //设置数据源
        factoryBean.setDataSource(ds);
        factoryBean.setPlugins(new Interceptor[]{new PageInterceptor()});
        //设置sql映射文件
        PathMatchingResourcePatternResolver pmrpr = new PathMatchingResourcePatternResolver();
        String pattern = "classpath*:META-INF/mapper/**/*.xml";
        Resource[] configResource = pmrpr.getResources(pattern);
        log.debug("all mappers:{}", Arrays.asList(configResource));
        factoryBean.setMapperLocations(configResource);
        return factoryBean.getObject();
    }

    public static class xxxDaoAutoGenerator implements ImportBeanDefinitionRegistrar {
        @Override
        public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
                                            BeanDefinitionRegistry registry) {
            ClassPathMapperScanner scanner = new ClassPathMapperScanner(registry);
            scanner.setSqlSessionFactoryBeanName(SQL_SESSION_FACTORY_BEAN_NAME);
            scanner.registerFilters();
            //扫描自动生成dao类
            scanner.scan("com.xxx.internet.xxx.dal.mapper");
        }
    }
}```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值