二、tienchin健身系统下的技术点复现--动态数据源

阳家坡对面的荫凉 / 2023-06-05 / 原文

二、配置动态数据源

前面我们已经准备了基础的类,@DynamicDatasource、DruidProperties、DynamicAspect

现在我们开始对 AbstractRoutingDatasource 所需要的数据源,放到对应的map结构中。

1、加载数据源


2、设置默认、目标数据源


到了这一步基本就设置完成,总的来说就是依据 AbstracRoutingDataSource 来存储 target 和 default 的数据源,重写 determineCurrentLookupKey 方法。


3、单元测试

3.0 创建service、mapper、domian

@Service
public class LoginUserService {

    @Autowired
    private LoginUserMapper loginUserMapper;

    public List<LoginUser> getAllLoginUsers() {
        return loginUserMapper.getAllLoginUsers();
    }
}

public class LoginUser {

    private Long id;
    private String name;

    @Override
    public String toString() {
        return "LoginUser{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

@Mapper
public interface LoginUserMapper {
    /**
     * 查找所有的登录用户
     *
     * @author 山沉
     * @date 2023/6/4 10:41
     * @return {@link List< LoginUser>}
     */
    @Select("select * from t_login_user")
    List<LoginUser> getAllLoginUsers();
}

然后看下数据库

tesdb2、testdb 两个库中有相同的t_login_user表

slave对应如下

master对应如下

3.1 直接访问

直接访问,不添加注解,是默认数据源

3.2 加注解访问