Condition.getQueryWrapper封装查询条件

Blade 已结 1 2820
WenKang
WenKang 剑童 2021-08-30 11:26
悬赏:10

一、该问题的重现步骤是什么?

1. 请求参数使用Map,用于模糊查询

@ApiIgnore @RequestParam Map<String, Object> map , Query query

2. 封装QueryWrapper

QueryWrapper<A> queryWrapper = Condition.getQueryWrapper(map, a.class);

3.分页查询

aService.page(Condition.getPage(query), queryWrapper);

二、你期待的结果是什么?实际看到的又是什么?

前端传参时 A表和B表的查询条件封装进了Map里,getQuerWrapper封装A.class查询条件时应该只有A类里面的字段条件

Condition.getQueryWrapper(map, A.class);

但是当.page查询时,,,另外B表的查询条件也包含在了查询条件里..也就是说map里面的所有属性都加入到了查询条件里,而不是只查询A.class里面的属性字段。


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

产品:BladeX-Boot

版本:2.8.1RELEASE

操作系统:win10


四、请提供详细的错误堆栈信息,这很重要。

image.png


五、若有更多详细信息,请在下面提供。

1条回答
  •  zhx1994
    zhx1994 (最佳回答者)
    2021-08-30 17:27

    QueryWrapper只适用单表查询,多表联合查询需要自定义sql查询。

    作者追问:2021-08-30 17:27

    并不是要多表查询,只是Condition.getQueryWrapper(map, a.class) 在封装查询条件时把map所有属性全放进去了。包括A类不包含的字段。

    注:map是@RequestParam Map<String, Object>,前端传参spring封装进去

    0 讨论(1)
提交回复