最近刚学完Sharding-jdbc,配置完读写分离后,不管怎么测试,发现直走主库,但是在别的简单项目上测试又是没问题的,最后在我一通操作下,终于发现了问题:

@Transactional 这个注解!!! 是个事务注解
    /**
     * 读写分离:测试
     */
    @Transactional
    @Test
    public void testSelectAll() {

        List<User> users4 = userMapper.selectAll();
        List<User> users5 = userMapper.selectAll();
        List<User> users6 = userMapper.selectAll();
        List<User> users7 = userMapper.selectAll();
        List<User> users8 = userMapper.selectAll();

    }

 

显而易见,当我们的操作方法中有@Transactional事务注解后,查询不会再走从库,所以操作都走主库!

当我们注掉@Transactional后,成功解决!

 至于为什么Sharding-jdbc的事务为什么有这个特性我就暂时不做解释了,想要深入了解的同学去查查官方文档看看吧~

Apache ShardingSpherehttps://shardingsphere.apache.org/这里还有个以前版本的网站

行表达式 :: ShardingSpherehttps://shardingsphere.apache.org/document/5.1.1/cn/features/sharding/concept/inline-expression/

最后,希望大家都学有所成 !

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐