MyBatis-Plus 之LambdaQueryWrapper 实现And/Or 查询

在Java项目中,通过LambdaQueryWrapper对BaseProject实体类进行条件查询,包括tid、ptid、type字段的等于条件,以及name字段的模糊搜索,同时搜索项目名称和开发企业名称。该查询支持动态构建SQLWHERE子句,提高代码的灵活性。
摘要由CSDN通过智能技术生成

今天收到房管项目经理的一个需要,在项目检测指标添加一个参数,查询符合项目名称或开发企业的所属项目信息。

LambdaQueryWrapper<BaseProject> lambda =  new LambdaQueryWrapper<BaseProject>();
lambda.eq(StringUtils.isNotEmpty(parame.getTid()), BaseProject::getTid, parame.getTid());
lambda.eq(StringUtils.isNotEmpty(parame.getPtid()), BaseProject::getPtid, parame.getPtid());
lambda.eq(StringUtils.isNotEmpty(parame.getType()), BaseProject::getType, parame.getType());
-- 核心代码:通过LambdaQueryWrapper<T> 实现and /or 查询
if(StringUtils.isNotEmpty(parame.getName())){
    lambda.and(wrapper->wrapper.like(StringUtils.isNotEmpty(parame.getName()), BaseProject::getName, parame.getName())
           .or()
           .like(StringUtils.isNotEmpty(parame.getName()), BaseProject::getDeveloperName, parame.getName())
        )
}

SQL 伪代码 :

select * from base_project
<where>
    <if test="bo.tid != null">
        and tid = #{bo.tid}
    </if>
    <if test="bo.ptid != null">
        and ptid = #{bo.ptid}
    </if>
     <if test="bo.type != null">
        and type = #{bo.type}
    </if>
    <if test="bo.name !=  null and bo.name !=''">
        and (
            name like concat('%',#{bo.name},'%')
            or
            developerName like concat('%',#{bo.name},'%')
        )
    </if>
</where>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis-Plus 是一个优秀的 MyBatis 增强工具,提供了许多便捷的功能来简化开发。LambdaQueryWrapperMyBatis-Plus 提供的一个查询条件构造器,可以使用 Lambda 表达式来编写查询条件。 使用 LambdaQueryWrapper,首先需要导入相应的类: ```java import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ``` 然后可以通过 LambdaQueryWrapper 的静态方法 lambda() 来创建一个 LambdaQueryWrapper 对象: ```java LambdaQueryWrapper<Entity> wrapper = new LambdaQueryWrapper<>(); ``` 接下来,可以使用 LambdaQueryWrapper 提供的方法来构建查询条件,例如: ```java wrapper.eq(Entity::getId, 1); // 等于 wrapper.ne(Entity::getStatus, 0); // 不等于 wrapper.gt(Entity::getAge, 18); // 大于 wrapper.lt(Entity::getSalary, 10000); // 小于 wrapper.like(Entity::getName, "Tom"); // 模糊查询 ``` 还可以使用 and() 和 or() 方法来组合多个条件: ```java wrapper.and(w -> w.eq(Entity::getGender, "male").ne(Entity::getStatus, 0)); // 使用 and 组合条件 wrapper.or(w -> w.eq(Entity::getAge, 20).eq(Entity::getName, "Tom")); // 使用 or 组合条件 ``` 最后,可以将 LambdaQueryWrapper 对象传入 MyBatis-Plus 提供的查询方法,例如 selectList()、selectOne(): ```java List<Entity> entityList = entityMapper.selectList(wrapper); Entity entity = entityMapper.selectOne(wrapper); ``` 这样就可以使用 LambdaQueryWrapper 来构建复杂的查询条件了。希望能对你有所帮助!如果还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值