当前位置: 首页 > news >正文

Java使用MyBatis-Plus的OR条件查询

MyBatis-Plus 是 MyBatis 的增强工具,旨在简化开发,提升开发效率。它提供了许多开箱即用的功能,其中之一便是条件构造器(Wrapper),能够方便地进行复杂的条件查询。本文将详细介绍如何在 MyBatis-Plus 中使用 OR 条件进行查询。

1. 环境准备

首先,确保你的项目已经集成了 MyBatis-Plus。以下是一个简单的 Maven 依赖配置:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.4</version>
</dependency>
​
 
 

2. 实体类和 Mapper 接口

假设我们有一个用户实体类 User 和相应的 Mapper 接口:

User 实体类

package com.example.demo.entity;import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;@Data
@TableName("user")
public class User {@TableIdprivate Long id;private String name;private Integer age;private String email;
}
​
 
 

UserMapper 接口

package com.example.demo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface UserMapper extends BaseMapper<User> {
}
​
 
 

3. 条件查询

MyBatis-Plus 提供了 QueryWrapper 和 LambdaQueryWrapper 两种方式来构造查询条件。这里主要介绍如何使用 QueryWrapper 实现 OR 条件查询。

使用 QueryWrapper

QueryWrapper 是一个通用的条件构造器,可以方便地进行条件拼接。以下示例展示了如何使用 OR 条件查询用户:

package com.example.demo;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;import java.util.List;@Component
public class MyBatisPlusExample implements CommandLineRunner {@Autowiredprivate UserMapper userMapper;@Overridepublic void run(String... args) throws Exception {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("age", 25).or().eq("name", "John");List<User> users = userMapper.selectList(queryWrapper);users.forEach(System.out::println);}
}
​
 
 

在上述代码中,queryWrapper.eq("age", 25).or().eq("name", "John") 构造了一个 OR 条件,表示查询年龄为25或名字为John的用户。

使用 LambdaQueryWrapper

LambdaQueryWrapper 提供了类型安全的条件构造方式,更加简洁和安全。以下是使用 LambdaQueryWrapper 实现相同 OR 条件查询的示例:

package com.example.demo;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;import java.util.List;@Component
public class MyBatisPlusExample implements CommandLineRunner {@Autowiredprivate UserMapper userMapper;@Overridepublic void run(String... args) throws Exception {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(User::getAge, 25).or().eq(User::getName, "John");List<User> users = userMapper.selectList(lambdaQueryWrapper);users.forEach(System.out::println);}
}
​
 
 

4. 组合复杂查询

MyBatis-Plus 支持任意复杂的查询条件组合,以下示例展示了如何组合多个 AND 和 OR 条件:

package com.example.demo;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;import java.util.List;@Component
public class MyBatisPlusExample implements CommandLineRunner {@Autowiredprivate UserMapper userMapper;@Overridepublic void run(String... args) throws Exception {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(User::getAge, 25).or(wrapper -> wrapper.eq(User::getName, "John").eq(User::getEmail, "john@example.com"));List<User> users = userMapper.selectList(lambdaQueryWrapper);users.forEach(System.out::println);}
}
​
 
 

在这个示例中,查询条件为:年龄为25或名字为John且邮箱为john@example.com的用户。

http://www.sczhlp.com/news/15084/

相关文章:

  • VS Code设置SSH远程调试
  • 强化学习-Sarsa
  • 网站建设开发服务费税率网络营销论文题目
  • 西安网页制作seo的含义是什么意思
  • 开发一款视频app多少钱seo查询系统源码
  • 鄂州网站制作哪家好如何接广告赚钱
  • Redis连接报错套接字地址只允许使用一次
  • 免费网络研讨会 | 革新建模方式,轻松打造卓越模型!
  • 【自学嵌入式:stm32单片机】DMA直接存储器存取
  • 企业网站设计分类seo排名软件
  • 南阳网站建站培训模板建站价格
  • 合肥网站建设设计腾讯朋友圈广告代理
  • wordpress炫彩主题破解版旺道智能seo系统
  • golang select为case添加优先级
  • 使用 RESTful 接口实现在 Postgis 中建立临时新表并在 Geoserver 中发布图层 - tsunchi
  • 常见的二十种软件测试方法详解(史上最全)
  • Laravel框架中的Blade模板引擎
  • 池式结构-内存池
  • 营销型网站的域名中国营销网
  • 软件开发入门石家庄百度关键词优化
  • 临沂做网站哪里好网络营销策划书总结
  • 长江证券官方网站下载mac923水蜜桃923色号
  • 成都专业的网站建站公司广州百度推广排名优化
  • wordpress教程下载地址深圳市企业网站seo营销工具
  • 国内大的做网站的公司seo网站结构优化
  • 电商网站开发公司杭州系列推广软文范例
  • 安陆做网站多少钱域名站长工具
  • 国内网站放国外服务器互联网营销师怎么报名
  • 广州市企业网站建设怎么进行推广
  • 什么网站可以做拍a发布会百度竞价点击一次多少钱