有可能是DataFilterInterceptor的一个bug,请确认。
版本:renren-security 企业版2.0 |
开发环境:chrome |
使用DataFilter的注解时候,框架将sqlFilter封装为一个DataScope对象。
DataFilterInterceptor以我的理解是将参数中DataScope对象中sqlFilter字符串取出进行sql拼接,省去了mapper.xml中手动去对params.sqlFilter进行拼接。
但是看此段代码(DataFilterInterceptor中)
img[//cdn.renren.io/59ea7201904202206267127.jpg]
被注释掉的是原来的代码,该方法无法取出所有参数,应该在key为params的map中。
不知我对该代码的理解以及修改建议是否正确,若理解有问题,请指出使用方法,谢谢。
-
2019-04-22
这样其实意义不大,多个参数,我们也会封装到一个key里面
可以看下DataFilterAspect
-
2019-04-22
@Mark 那也就是说DataFilterInterceptor这个拦截器现在没什么意义了?
-
2019-04-22
@LNPC 有意义啊,数据权限,就是靠这个过滤的,我是说多个参数意义不大
-
2019-04-22
@Mark 我现在纠结的不是多个参数的问题,现在的问题是Constant.SQL_FILTER 被DataScope封装的参数,以现在的写法无法取出。
-
2019-04-22
@Mark 换句话说,使用DataFilter之后,拦截器里经历过循环后scope对象依然是null。
-
2019-04-22
@LNPC 你的意思是不会拼接SQL是吧,代码有没有做过修改呢,不应该出现这个问题
-
2019-04-22
@Mark
没有做过修改,直接上图吧
img[//cdn.renren.io/0d5da201904221320247564.png]
img[//cdn.renren.io/415fd201904221320306736.png]
以目前的循环方式无法取出被封装的DataScope对象
-
2019-04-25
@Mark 我知道问题的所在了,原因是我在自定义分页查询的时候加了page参数,根据官方文档分页是让加这个参数,现在这个框架不需要加这个参数,仅仅是BaseServiceImpl 在getPage里把page放到了参数的map里。这是如何做到分页的呢?
-
2019-04-25
@LNPC mybatis-plus支持这种写法了,只是mybatis-plus文档里没有说明,需要看下mybatis-plus源码,才知道