其实使用MyBatis-Plus碰到and, or拼接sql这个问题的解决方法一搜就能出来,而且官网也给出了示例。之所以记录,这里只是为了记录自己犯错的问题而已。

QueryWrapper<BillTypePO> qw = new QueryWrapper<>();
qw.lambda.eq(BillTypePO::getBillId, billId);
qw.lambda.eq(BillTypePO::getBillType, BillTypeEnum.TRAIN.getCode());
qw.lambda.or().eq(BillTypePO::getBillType, BillTypeEnum.PLANE.getCode());

打印出来的sql如下:

select * from t_bill_type where (bill_id = ? and bill_type= ? or bill_type = ?)

按官方示例修改后:

QueryWrapper<BillTypePO> qw = new QueryWrapper<>();
qw.lambda.eq(BillTypePO::getBillId, billId)
.and(x -> x.eq(BillTypePO::getBillType, BillTypeEnum.TRAIN.getCode())
           .or.eq(BillTypePO::getBillType, BillTypeEnum.PLANE.getCode())
);

打印出来的sql如下:

select * from t_bill_type where (bill_id = ? and (bill_type= ? or bill_type = ?))

总结:一定要严谨!


版权声明:本文为weixin_47516125原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_47516125/article/details/126784190