LambdaQueryWrapper的用法
MyBatisPlus
·
一、 QueryWrapper
之前自己做项目时一直使用的是QueryWrapper去进行数据的操作,代码如下:
QueryWrapper<DomainTb> wrapper = new QueryWrapper<>();
wrapper.eq("domain_id",domainId);
list(wrapper);
以上是根据domain_id条件查询列表,使用这种方式会出现什么问题呢?
如果数据库中的字段改名了把domain_id改为id,那是不是要把所有使用domain_id的代码都改一遍,那工作量可想而知。
二、LambdaQueryWrapper
既然有问题,就有解决问题的办法。LambdaQueryWrapper的使用代码如下:
LambdaQueryWrapper<DomainTb> wrapper = Wrappers.lambdaQuery();
wrapper.eq(DomainTb::getDomainId,domainId);
list(wrapper);
可以直接在原来的基础上引入lambda(wrapper.lambda),避免了使用domain_id的硬编码。也可以直接使用LambdaQueryWrapper的构造器,还有一种方式,就是上面代码的方式,使用
Wrappers.lambdaQuery()来创建。
为什么要使用Wrappers.lambdaQuery()?因为源码上建议的,咱们就这么整肯定没毛病。上网上查了查:lambdaQuery 可用屏蔽底层的具体实现,未来会有变化上层代码无需过多的调整。
/**
* 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity)
*/
public LambdaQueryWrapper() {
this((T) null);
}
/**
* 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity)
*/
public LambdaQueryWrapper(T entity) {
super.setEntity(entity);
super.initNeed();
}
它还支持链式编程,可读性差,但是用来装装可以。
更多推荐
已为社区贡献2条内容
所有评论(0)