MyBatis中的LambdaQueryWrapper构造器

1、导入依赖

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

2、LambdaQueryWrapper和:: 使用案例

首先有个User表对应的实体类为User.java,其中包含一些基本user字段

LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getState, 0);
queryWrapper.eq(User::getName, "宇子");
List<User> list = userService.list(queryWrapper);

在上面的代码中,我们可以看到首先是使用了mybatis plus的条件构造器LambdaQueryWrapper对象。
然后设置User的stat字段的值为0,name字段的值为宇子。

3、::的作用

从中可以得出::在java8中作用就是获取方法;

4、QueryWrapper构造器

最初 最基本的写法如下:

// 查询条件构造器
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("user_id", id);
// 查询操作
List<User> users= userService.list(wrapper);

引入lambda后,避免在代码里写user_id字样的代码

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(User::getUserId, id);
List<User> users=userService.list(wrapper);

5、LambdaQueryWrapper构造器

再次简化lambda的使用,我们改写成LambdaQueryWrapper构造器,语法如下:

LambdaQueryWrapper<User> wrapper = new QueryWrapper<User>().lambda();
wrapper.eq(User::getUserId, id);
List<User> users= userService.selectList(wrapper);

再次优化下:

LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getUserId, id);
List<User> users= userService.selectList(wrapper);

6、LambdaQueryWrapper支持模糊查询

public R<IPage<UpgradeVO>> list(Upgrade upgrade, Query query) {
		LambdaQueryWrapper<Upgrade> queryWrapper = new LambdaQueryWrapper<>();
		queryWrapper.eq(Func.isNotEmpty(upgrade.getAppVersion()), Upgrade::getAppVersion, upgrade.getAppVersion())
			.eq(Func.isNotEmpty(upgrade.getDeviceMode()), Upgrade::getDeviceMode, upgrade.getDeviceMode())
			.like(Func.isNotEmpty(upgrade.getVersionName()), Upgrade::getVersionName, upgrade.getVersionName());
		IPage<Upgrade> pages = upgradeService.page(Condition.getPage(query), queryWrapper);
		return R.data(UpgradeWrapper.build().pageVO(pages));
	}

可以直接在表达式中判断值是否存在,空值判断,Wrappers使用方法,可以支持模糊查询(like),这种写法可以避免sql的编写

public CastingDetail notSoldCastingDetail(Long seriesCastingId, Long castingId) {
		return castingDetailService.getOne(Wrappers.<CastingDetail>query().lambda()
			.eq(seriesCastingId != null && seriesCastingId > 0, CastingDetail::getSeriesCastingId, seriesCastingId)
			.isNull(seriesCastingId == null || seriesCastingId < 0, CastingDetail::getSeriesCastingId)
			.eq(CastingDetail::getCastingId, castingId)
			.eq(CastingDetail::getStatus, 0)
			.eq(seriesCastingId != null && seriesCastingId > 0, CastingDetail::getBlockchainStatus, 1)
			.eq(seriesCastingId == null || seriesCastingId < 0, CastingDetail::getBlockchainStatus, 0)
			.last(" limit 1"));
	}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值