问题描述
Shardingsphere由4.0.1切换到4.1.1版本后,发现在跨表(即查询涉及多个表)分页查询的时候查不出数据。通过查看打印的sql发现设置的参数很是奇怪,如下图所示:
问题原因
经过漫长的调试终于发现了问题所在,一切言语尽在图中:
解决方案
通过问题分析我们知道问题点就是shardingsphere4.1.1版本在解析查询条件时不会记录非数据库字段的参数,我们需要根据项目的实际情况去找适合的解决方案。笔者这边的解决方案是将#替换为$,在sharding拿到sql前就已经进行了变量替换,从而避免参与到sharding的参数解析中。效果如图: