MyBatisPlus的Controller层的参数是QueryWrapper<T>,(GET请求)请问用postman怎么给它传参啊?

发布于 2022-03-08 20:18:15 字数 3070 浏览 750 评论 5

我用的是could框架,A服务调用B服务,B服务集成MaBatisPlus请求参数方法是查询,用的GET请求,但我用postman请求时,怎么也无法把值传给queryWrapper,用A服务通过feign也调用不到queryWrapper;希望大神帮帮忙;

这是B服务的代码:(这里的QueryWrapper不知道怎么用postman给值)

@GetMapping("/" + VersionConstant.VERSION + "/getTAppInfoWrapperByObject")
    public AjaxResult<JSONObject> getTAppInfoWrapperByObject(@RequestParam QueryWrapper<TAppInfo> queryWrapper){
        if(log.isDebugEnabled()){
            log.debug(QUERYWRAPPER,queryWrapper);
        }
        List<Object> result;
        try{
            result = service.listObjs(queryWrapper);
            if(log.isDebugEnabled()){
                log.debug(RESULT,result);
            }
            Preconditions.checkNotNull(result);
            Preconditions.checkArgument(!result.isEmpty());
        }catch (IllegalArgumentException e){
            log.error(ConstantsCode.DATA_IS_EMPTY.getName(), e);
            throw new HttpCodeException(HttpStatus.NOT_FOUND, ConstantsCode.DATA_IS_EMPTY.getName());
        }catch (Exception e) {
            log.error(ConstantsCode.DATABASE_EXCEPTION.getName(), e);
            throw new HttpCodeException(HttpStatus.INTERNAL_SERVER_ERROR, ConstantsCode.DATABASE_EXCEPTION.getName());
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.put(RESULT_JSON,result);
        return new AjaxResult<JSONObject>().success(jsonObject);
    }

 

这是A服务的代码:

@Slf4j
@RestController
public class TAppInfoControllerDemo {

    @Autowired
    private TAppInfoDemoFeign  tAppInfoDemoFeign;


    @GetMapping("/" + VersionConstant.VERSION + "/v1")
    public AjaxResult<JSONObject> getTAppInfoWrapperByObject(){
        QueryWrapper<TAppInfo> queryWrapper1 = new QueryWrapper<>();
        TAppInfo d = new TAppInfo();
        d.setAppId("1051341295332888576");
        d.setDeveloperId("1");
        queryWrapper1.setEntity(d);
//        QueryWrapper<TAppInfo> status = queryWrapper1.select("status");
//        Map<String,Object> map = new HashMap<>();
//        map.put("queryWrapper",status);
//        queryWrapper1.eq("developer_id","1");
//        queryWrapper1.lambda().eq(TAppInfo::getDeveloperId,"1").eq(TAppInfo::getAppId,"1051657738884747264");
//        System.out.println(queryWrapper1.getSqlSegment());
        AjaxResult<JSONObject> tAppInfoWrapperByObject = tAppInfoDemoFeign.getTAppInfoWrapperByObject(queryWrapper1);
        return  tAppInfoWrapperByObject;
    }
}

 

这是feign,A调用feign,feign调用B

@FeignClient(name="mybatis-plus-demo")
public interface TAppInfoDemoFeign {

    @ApiOperation(value = "t-app-info表自定义条件查询数据", notes = "响应200表示成功,403表示参数为空,404表示没有查到数据,500表示执行SQL异常")
    @GetMapping("/" + VersionConstant.VERSION + "/getTAppInfoWrapperByObject")
     AjaxResult<JSONObject> getTAppInfoWrapperByObject(@RequestParam(value = "queryWrapper") QueryWrapper<TAppInfo> queryWrapper);
}

 

最终的目的就是要把A服务中的QueryWrapper传给B服务;但不能直接传,有没有大神帮帮忙啊?

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

自此以后,行同陌路 2022-03-11 06:48:57
QueryWrapper<TAppInfo> queryWrapper

首先解释一下,

QueryWrapper 是装查询条件的,你的TAppInfo 是你的查询条件, 你传参可以先new一个TAppInfo对象,把需要的参数set一下,然后装在QueryWrapper里就行了。

你这个代码上来讲是不建议你在Controller传参中使用QueryWrapper的,因为QueryWrapper是使用在业务或者dao中的,他这样写,就是懒,不想在组装。

旧伤慢歌 2022-03-11 06:37:52

官方不推荐这样做

顾挽 2022-03-11 06:02:11

我找了找,用gson就行

https://stackoverflow.com/questions/6203487/why-does-gson-use-fields-and-not-getters-setters

尐偏执 2022-03-11 05:51:47

我也是   有没有解决办法

梦里兽 2022-03-10 14:08:40

我和你有同样的想法,如果能这样传递的话,前端部分就容易写的多,只是我试了下,报错啊,querywrapper貌似不能序列化传递啊

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文