分库操作(无事务)
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(); } }
等等。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了