分库操作(无事务)

Product库:

复制代码
@Configuration
@MapperScan(basePackages = ProductConfig.PACKAGE, sqlSessionFactoryRef = "productSqlSessionFactory")
public class ProductConfig {
    // 精确到 cluster 目录,以便跟其他数据源隔离
    static final String PACKAGE = "com.yangshan.exportData.mapper.product";
    static final String MAPPER_LOCATION = "classpath:mapper/product/*.xml";

    @Value("${product.datasource.url}")
    private String url;

    @Value("${product.datasource.username}")
    private String user;

    @Value("${product.datasource.password}")
    private String password;

    @Value("${product.datasource.driverClassName}")
    private String driverClass;

    @Bean(name = "productDataSource")
    public DataSource productDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        return dataSource;
    }

    @Bean(name = "productTransactionManager")
    public DataSourceTransactionManager productTransactionManager() {
        return new DataSourceTransactionManager(productDataSource());
    }

    @Bean(name = "productSqlSessionFactory")
    public SqlSessionFactory productSqlSessionFactory(@Qualifier("productDataSource") DataSource productDataSource) throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(productDataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(ProductConfig.MAPPER_LOCATION));
        return sessionFactory.getObject();
    }
}
复制代码

Order库:

复制代码
@Configuration
@MapperScan(basePackages = OrderConfig.PACKAGE, sqlSessionFactoryRef = "orderSqlSessionFactory")
public class OrderConfig {
    // 精确到 cluster 目录,以便跟其他数据源隔离
    static final String PACKAGE = "com.yangshan.exportData.mapper.order";
    static final String MAPPER_LOCATION = "classpath:mapper/order/*.xml";

    @Value("${order.datasource.url}")
    private String url;
    @Value("${order.datasource.username}")
    private String user;
    @Value("${order.datasource.password}")
    private String password;
    @Value("${order.datasource.driverClassName}")
    private String driverClass;

    @Bean(name = "orderDataSource")
    public DataSource orderDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        return dataSource;
    }

    @Bean(name = "orderTransactionManager")
    public DataSourceTransactionManager orderTransactionManager() {
        return new DataSourceTransactionManager(orderDataSource());
    }

    @Bean(name = "orderSqlSessionFactory")
    public SqlSessionFactory orderSqlSessionFactory(@Qualifier("orderDataSource") DataSource orderDataSource, MybatisProperties mybatisProperties) throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(orderDataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(OrderConfig.MAPPER_LOCATION));
        sessionFactory.setConfiguration(mybatisProperties.getConfiguration());
        return sessionFactory.getObject();
    }
}
复制代码

等等。。。

posted @   yifanSJ  阅读(258)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示