MyBatis-Plus条件构造器 多个组合OR嵌套拼接写法
// 参数final List<UserOrder> userOrders = getUserOrders();// 创建查询参数LambdaQueryWrapper<UserOrder> lqw = new LambdaQueryWrapper<>();lqw.eq(UserOrder::getChargeObjectType, "x");lqw.and(ilqw -> {userOrders.
·
// 参数
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 = ?))
更多推荐
已为社区贡献10条内容
所有评论(0)