diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index a9248f1..d4b52a2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -65,6 +65,7 @@ public class SysLoginController */ @Operation(summary = "获取用户信息") @GetMapping("getInfo") + // @DataSource(DataSourceType.SLAVE) public AjaxResult getInfo() { SysUser user = SecurityUtils.getLoginUser().getUser(); diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index 4c67198..2348922 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -12,23 +12,23 @@ spring: # 从库数据源 slave: # 从数据源开关/默认关闭 - enabled: false - url: - username: - password: + enabled: true + url: jdbc:mysql://127.0.0.1/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: 123456 sharding: # 分库分表开关/默认关闭 - enabled: false - order1: - enabled: false - url: - username: - password: - order2: - enabled: false - url: - username: - password: + enabled: true + ruoyi1: + enabled: true + url: jdbc:mysql://127.0.0.1/ruoyi1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: 123456 + ruoyi2: + enabled: true + url: jdbc:mysql://127.0.0.1/ruoyi2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: 123456 # 初始连接数 initialSize: 5 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 8a2a28f..0740eda 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -49,7 +49,7 @@ user: spring: cache: # 指定缓存类型 jcache 本地缓存 redis 缓存 - type: jcache + type: redis redis: # 指定存活时间(ms) time-to-live: 86400000 diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShardingDataSourceConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShardingDataSourceConfig.java index 5b79d62..5e8bcea 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShardingDataSourceConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShardingDataSourceConfig.java @@ -36,17 +36,17 @@ public class ShardingDataSourceConfig { Logger logger = LoggerFactory.getLogger(ShardingDataSourceConfig.class); @Bean - @ConfigurationProperties("spring.datasource.druid.sharding.order1") - @ConditionalOnProperty(prefix = "spring.datasource.druid.sharding.order1", name = "enabled", havingValue = "true") - public DataSource order1DataSource(DruidProperties druidProperties) { + @ConfigurationProperties("spring.datasource.druid.sharding.ruoyi1") + @ConditionalOnProperty(prefix = "spring.datasource.druid.sharding.ruoyi1", name = "enabled", havingValue = "true") + public DataSource ruoyi1DataSource(DruidProperties druidProperties) { DruidDataSource dataSource = DruidDataSourceBuilder.create().build(); return druidProperties.dataSource(dataSource); } @Bean - @ConfigurationProperties("spring.datasource.druid.sharding.order2") - @ConditionalOnProperty(prefix = "spring.datasource.druid.sharding.order2", name = "enabled", havingValue = "true") - public DataSource order2DataSource(DruidProperties druidProperties) { + @ConfigurationProperties("spring.datasource.druid.sharding.ruoyi2") + @ConditionalOnProperty(prefix = "spring.datasource.druid.sharding.ruoyi2", name = "enabled", havingValue = "true") + public DataSource ruoyi2DataSource(DruidProperties druidProperties) { DruidDataSource dataSource = DruidDataSourceBuilder.create().build(); return druidProperties.dataSource(dataSource); } @@ -72,25 +72,25 @@ public class ShardingDataSourceConfig { Map dataSourceMap = new HashMap<>(); // 添加数据源 - setDataSource(dataSourceMap, "order1", "order1DataSource"); - setDataSource(dataSourceMap, "order2", "order2DataSource"); + setDataSource(dataSourceMap, "ruoyi1", "ruoyi1DataSource"); + setDataSource(dataSourceMap, "ruoyi2", "ruoyi2DataSource"); // 配置分片规则 ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration(); // 表规则配置 示例: // 添加order1.sys_order_0,order2.sys_order_0,order1.sys_order_1,order2.sys_order_1 TableRuleConfiguration orderTableRuleConfig = new TableRuleConfiguration( - "sys_user", "order$->{1..2}.sys_order_$->{0..1}"); + "sys_user", "ruoyi$->{1..2}.sys_user_$->{0..1}"); // 配置分库策略 // 示例: 根据user_id分库,user_id为单数去order1库,偶数去order2库 orderTableRuleConfig.setDatabaseShardingStrategyConfig( - new InlineShardingStrategyConfiguration("user_id", "order$->{user_id % 2 + 1}")); + new InlineShardingStrategyConfiguration("user_id", "ruoyi$->{user_id % 2 + 1}")); // 配置分表策略 - // 示例: 根据order_id分表,order_id为偶数分到sys_order_0表,奇数分到sys_order_1表 + // 示例: 根据sex分表,sex为偶数分到sys_order_0表,奇数分到sys_order_1表 orderTableRuleConfig.setTableShardingStrategyConfig( - new InlineShardingStrategyConfiguration("order_id", "sys_order_$->{order_id % 2}")); + new InlineShardingStrategyConfiguration("sex", "sys_user_$->{sex % 2}")); // 分布式主键 - orderTableRuleConfig.setKeyGeneratorConfig(new KeyGeneratorConfiguration("SNOWFLAKE", "order_id")); + orderTableRuleConfig.setKeyGeneratorConfig(new KeyGeneratorConfiguration("SNOWFLAKE", "user_id")); shardingRuleConfig.getTableRuleConfigs().add(orderTableRuleConfig); // 获取数据源对象 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java index e8b1a90..ceb43ea 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java @@ -4,13 +4,16 @@ import java.util.List; import org.apache.ibatis.annotations.Param; +import com.ruoyi.common.annotation.DataSource; import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.enums.DataSourceType; /** * 用户表 数据层 * * @author ruoyi */ +@DataSource(DataSourceType.SHARDING) public interface SysUserMapper { /**