MyBatis-Plus条件构造器 多个组合OR嵌套拼接写法
Posted 抓手
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis-Plus条件构造器 多个组合OR嵌套拼接写法相关的知识,希望对你有一定的参考价值。
// 参数
final List<UserOrder> userOrders = getUserOrders();
// 创建查询参数
LambdaQueryWrapper<UserOrder> lqw = new LambdaQueryWrapper<>();
lqw.eq(UserOrder::getChargeObjectType, "x");
lqw.and(ilqw ->
userOrders.forEach(o ->
ilqw.or(iilqw -> iilqw.eq(UserOrder::getUserId, o.getUserId()).eq(UserOrder::getUserType, o.getUserType()));
);
);
// 查询
List<UserOrder> list = userOrderService.list(lqw);
核心就是
lqw.and(ilqw ->
userOrders.forEach(o ->
ilqw.or(iilqw -> iilqw.eq(UserOrder::getUserId, o.getUserId()).eq(UserOrder::getUserType, o.getUserType()));
);
);
// 可以简化成一行
lqw.and(ilqw -> userOrders.forEach(o -> ilqw.or(iilqw -> iilqw.eq(UserOrder::getUserId, o.getUserId()).eq(UserOrder::getUserType, o.getUserType()))));
执行后sql
SELECT
*
FROM
user_order
WHERE
charge_object_type = ? AND ((user_type = ? AND user_id = ?) OR (user_type = ? AND user_id = ?))
以上是关于MyBatis-Plus条件构造器 多个组合OR嵌套拼接写法的主要内容,如果未能解决你的问题,请参考以下文章
MyBatis-Plus02_条件构造器QueryWrapperUpdateWrapperconditionLambdaQuery
mybatis-plus条件构造器EntityWrapper
MyBatis-Plus02_条件构造器QueryWrapperUpdateWrapperconditionLambdaQuery