默认数据源配置
3.1 工程依赖准备
在stock_common工程导入sharding-jdbc依赖:
<!--引入shardingjdbc依赖-->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
</dependency>
3.2 配置默认数据源
系统管理相关的表数据量较少,无需分库分表,所以可作为sharding-jdbc的默认数据源;
在stock_backend工程配置application-sharding.properties:
# 数据源名称,多数据源以逗号分隔
# 注意事项:数据源名称如果存在多个单词,不要使用小驼峰,建议使用中划线间隔(不要使用下划线间隔符)
spring.shardingsphere.datasource.names=df
# 配置默认数据源
# 数据库连接池类名称
spring.shardingsphere.datasource.df.type=com.alibaba.druid.pool.DruidDataSource
# 数据库驱动类名
spring.shardingsphere.datasource.df.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库 url 连接
spring.shardingsphere.datasource.df.url=jdbc:mysql://localhost:3306/stock_sys_db?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai
# 数据库用户名
spring.shardingsphere.datasource.df.username=root
# 数据库密码
spring.shardingsphere.datasource.df.password=root
# 配置默认数据源
spring.shardingsphere.sharding.default-data-source-name=df
# 是否开启 SQL 显示,默认值: false
spring.shardingsphere.props.sql.show=true
主配置文件application.yml激活application-sharding.properties配置:
spring.profiles.active=sharding
同时在application.yml主配置文件中注释掉原有数据源信息!!
3.3 默认数据源效果测试
@SpringBootTest
public class TestSharding {
@Autowired
private SysUserMapper sysUserMapper;
/**
* 测试默认数据源
*/
@Test
public void testDefaultDs(){
SysUser user = sysUserMapper.selectByPrimaryKey("1237365636208922624");
System.out.println(user);
}
}
对应的mapper.xml
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from sys_user
where id = #{id,jdbcType=BIGINT}
</select>
测试时发现报异常错误:
所以在主配置文件中,配置bean允许被覆盖:
spring.main.allow-bean-definition-overriding=true
最终效果: