mybatis-plus的or和括号查询示例

这篇博客展示了如何使用Java的MyBatis LambdaQueryWrapper实现不同的SQL查询条件,包括组合条件查询,如姓梅且年龄小于30或邮箱不为空,以及或条件查询,如姓梅或年龄在20到30之间且邮箱不为空。通过实例代码详细解释了查询方法和结果。
摘要由CSDN通过智能技术生成

数据截图:

第一种:姓梅并且(年龄<30或邮箱不为空)

原始sql:

select * from user where name like '梅%' and (age < 30 or email is not null);

查询方法:

@Autowired
private UserMapper userMapper;

@Test
public void test() {
	LambdaQueryWrapper<User> userQueryWrapper = Wrappers.<User>lambdaQuery()
			.likeRight(User::getName, "梅")
			.and(wq -> wq.lt(User::getAge, 30)
					.or().isNotNull(User::getEmail));
	List<User> users = userMapper.selectList(userQueryWrapper);
	System.out.println(users);
}

结果:

[User(id=1, name=梅长苏, age=30, email=mei@qq.com, parentId=null, createTime=Fri Jan 11 14:20:20 CST 2019)]

 第二种:姓梅或者(年龄<30并且年龄>20并且邮箱不为空)

原始sql:

select * from user where name like '梅%' or (age < 30 and age > 20 and email is not null);

查询方法:

@Autowired
private UserMapper userMapper;

@Test
public void test2() {
	LambdaQueryWrapper<User> userQueryWrapper = Wrappers.<User>lambdaQuery()
			.likeRight(User::getName, "梅")
			.or(wq -> wq.lt(User::getAge, 30)
					.gt(User::getAge, 20)
					.isNotNull(User::getEmail));
	List<User> users = userMapper.selectList(userQueryWrapper);
	System.out.println(users);
}

结果:

[User(id=1, name=梅长苏, age=30, email=mei@qq.com, parentId=null, createTime=Fri Jan 11 14:20:20 CST 2019), 
User(id=2, name=靖王, age=25, email=jin@qq.com, parentId=1, createTime=Tue Feb 05 11:12:22 CST 2019), 
User(id=3, name=夏首尊, age=28, email=xia@qq.com, parentId=2, createTime=Thu Feb 14 08:31:16 CST 2019)]

第三种:(年龄<30或邮箱不为空)并且姓梅

 原始sql:

select * from user where (age < 30 or email is not null) and name like '梅%';

查询代码:

@Autowired
private UserMapper userMapper;


@Test
public void test3() {
	LambdaQueryWrapper<User> userQueryWrapper = Wrappers.<User>lambdaQuery()
			.nested(wq -> wq.lt(User::getAge, 30)
					.or()
					.isNotNull(User::getEmail))
			.likeRight(User::getName, "梅");
	List<User> users = userMapper.selectList(userQueryWrapper);
	System.out.println(users);
}

 结果:

[User(id=1, name=梅长苏, age=30, email=mei@qq.com, parentId=null, createTime=Fri Jan 11 14:20:20 CST 2019)]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值