其实使用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 版权协议,转载请附上原文出处链接和本声明。