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-Plus 条件构造器

mybatis-plus条件构造器

mybatis-plus条件构造器

MyBatis-Plus02_条件构造器QueryWrapperUpdateWrapperconditionLambdaQuery