使用条件构造器QueryWrapper,SQL语句不会拼接条件构造器里面的语句。

来源:-

慕沐9407593

2020-09-11 17:02

老师您好,使用MP过程出bug无法解决,o(╥﹏╥)o 关键代码如下:

@Reference(version = "1.0.0")
StoreContactService storeContactService;

QueryWrapper<StoreContactEntity> storeContactEntityQueryWrapper = new QueryWrapper<>();
storeContactEntityQueryWrapper.eq("store_id", storeUserEntity.getId());
List<StoreContactEntity> storeContactEntityList = storeContactService.list(storeContactEntityQueryWrapper);

打印的sql语句为:

SELECT id,product_id,specs_name,specs_content,product_price,original_price,status,sort_order,create_time,update_time FROM specs_type

==> Parameters: 

<==    Columns: id, product_id, specs_name, specs_content, product_price, original_price, status, sort_order, create_time, update_time

<==        Row: 1, 1, 规格1, 精品套餐1, 10.00, 10.00, 1, 1, 2020-09-05 22:22:38.0, null

<==        Row: 2, 1, 规格2, 精品套餐2, 12.00, 12.00, 1, 1, 2020-09-05 22:23:11.0, null

<==        Row: 3, 2, 规格1, 2套餐, 10.00, 10.00, 1, 1, 2020-09-10 17:27:56.0, null

<==      Total: 3

把product_id为2的也查询出来了,乍一看代码,SQL语句没有把条件拼接上去。

以为是Service层出了问题,检查之后发现,项目中其他地方的getById,page分页方法均有效,只有使用的条件构造器的地方条件构造器里的调用全部无效。

查看源码发现eq第一个参数要传true,但是默认是true,不抱希望的去测试,果然不是这里的问题。

猜测可能和MP版本有关,原MP版本为3.1.2,升到3.3.2,3.4.0结果相同。

打断点进入QueryWrapper里面,发现entity实体是空的,现在不知道怎么解决。

dubbo 2.5.3版本,springboot 1.5.6.RELEASE。




写回答 关注

1回答

  • 老猿
    2020-09-13 17:43:42

    你使用dubbo,应该是通过rpc的方式调用远程项目的方法了,MP官网上关于条件构造器是这样说的“不支持以及不赞成在 RPC 调用中把 Wrapper 进行传输”

MyBatis-Plus入门

MyBatis-Plus框架入门必学课程!

56140 学习 · 381 问题

查看课程

相似问题