采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
第一次传入参数编辑的时候,数据源为:slave,.当更新之后,给前端返回的时候,数据源为:master。 同样的方法ShopDao.queryByShopId。
if (ms.getSqlCommandType().equals(SqlCommandType.SELECT)) { // selectKey 为自增id查询主键(SELECT LAST_INSERT_ID())方法,使用主库 if (ms.getId().contains(SelectKeyGenerator.SELECT_KEY_SUFFIX)) { lookupKey = DynamicDataSourceHolder.DB_MASTER; } else { BoundSql boundSql = ms.getSqlSource().getBoundSql(objects[1]); String sql = boundSql.getSql().toLowerCase(Locale.CHINA).replaceAll("[\\t\\n\\r]", " "); if (sql.matches(REGEX)) { lookupKey = DynamicDataSourceHolder.DB_MASTER; } else { lookupKey = DynamicDataSourceHolder.DB_SLAVE; } } }
可以设置断点if (ms.getId().contains(SelectKeyGenerator.SELECT_KEY_SUFFIX)) { 调试一下
同学好,我看内容都是query请求吧 query的话走从走主都可以的吧
是啊,查询不是走从吗,写入和更新,删除走主吗
这里update的时候会发一个select 主键的请求,这个是走主的,因为你要update主库,它需要获取你最新的id并返回
没理解,更新是没问题,查询没啥就不走从了,更新的时候主键ID不变吧
登录后可查看更多问答,登录/注册
SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需
1.9k 47
1.8k 41
2.5k 40
1.8k 39
1.5k 37