Example.Criteria 查询包含多种情况

在使用 Example.Criteria 进行查询时,你可能会遇到需要根据多种情况来构建查询条件的情形。Example.Criteria 是 MyBatis 框架中用于动态构建查询条件的工具,特别适用于需要根据不同的业务逻辑组合不同查询条件的情况。下面是一些常见的用例和如何使用 Example.Criteria 来处理这些情况的例子。

1. 基础使用

假设我们有一个 User 实体类,现在要基于用户名或者邮箱地址进行查询。

Example example = new Example(User.class);
Example.Criteria criteria = example.createCriteria();
criteria.andLike("username", "%john%").orLike("email", "%john.doe@example.com%");
List<User> users = userMapper.selectByExample(example);

这里,我们创建了一个 Example 对象,并通过 createCriteria() 方法创建了 Criteria 对象。然后,我们添加了两个查询条件:一个是用户名包含 “john” 的记录,另一个是电子邮件地址包含特定字符串的记录。这两个条件之间使用 or 关系连接。

2. 使用 AND 和 OR 组合条件

如果需要更加复杂的逻辑组合,比如同时满足几个条件(AND)或至少满足其中一个条件(OR),可以通过链式调用来实现。

Example example = new Example(User.class);
Example.Criteria criteria = example.createCriteria();
// 查找所有激活用户且用户名为'john' 或 邮箱以'@example.com'结尾的用户
criteria.andEqualTo("status", "active")
        .and(or -> or.andLike("username", "john")
                     .orLike("email", "%@example.com"));
List<User> users = userMapper.selectByExample(example);

在这个例子中,首先定义了状态必须是激活(andEqualTo("status", "active")),接着通过一个匿名函数定义了更进一步的条件:用户名是’john’或者是邮箱以’@example.com’结尾。注意这里的.and(or -> ...)结构允许你在现有的AND条件下嵌套更多的OR条件。

3. 多个 Criteria

有时可能需要完全独立的多个条件集,这时可以使用 or() 方法添加新的 Criteria

Example example = new Example(User.class);
Example.Criteria criteria = example.createCriteria()
    .andEqualTo("status", "active");

example.or(example.createCriteria()
    .andLike("username", "john"))
    .or(example.createCriteria()
        .andLike("email", "%@example.com"));

List<User> users = userMapper.selectByExample(example);

此示例展示了如何利用 or() 方法将多个不相关的条件集合并起来执行查询。

以上就是一些关于如何使用 Example.Criteria 来构建多样化查询条件的基本指导。根据你的具体需求调整上述代码片段即可适应更多复杂场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值