MyBatisPlus的Controller层的参数是QueryWrapper<T>,(GET请求)请问用postman怎么给它传参啊?
我用的是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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
首先解释一下,
QueryWrapper 是装查询条件的,你的TAppInfo 是你的查询条件, 你传参可以先new一个TAppInfo对象,把需要的参数set一下,然后装在QueryWrapper里就行了。
你这个代码上来讲是不建议你在Controller传参中使用QueryWrapper的,因为QueryWrapper是使用在业务或者dao中的,他这样写,就是懒,不想在组装。
官方不推荐这样做
我找了找,用gson就行
https://stackoverflow.com/questions/6203487/why-does-gson-use-fields-and-not-getters-setters
我也是 有没有解决办法
我和你有同样的想法,如果能这样传递的话,前端部分就容易写的多,只是我试了下,报错啊,querywrapper貌似不能序列化传递啊