现象
传递参数ids=34,35,报表页面只展示34一条记录
原因
1.积木报表的动态sql使用了Freemarker渲染
ids=34,35时
2.积木报表 参数占位符是${},与Freemarker冲突,猜测是在Freemarker渲染之前,把${ids}转换成了:ids
3.导致把ids作为一个字符串传给in:id in ("34,35")
4.只查询出一条,是为MySQL(5.7.32)的问题,已拿sql 到数据库中验证过。
解决方法
- 降低积木版本,低版本支持,猜测是版本升级,进一步避免参数sql 注入
- 使用api数据源
- 使用find_in_set(),但不能使用索引
- 优雅解决方案: id in (split(ids,','))还未亲自验证(sql动态渲染时解决不了,就去mysql函数层解决,解决思路:找下面的人,本人,或上面的人解决)