在做黑马点评的这个项目时,遇见了IService
里的一个陌生的方法:query()
。
按照注释,这句代码根据手机号查询用户:
User user = query().eq("phone", phone).one();
查了一下后发现:query()
返回 QueryChainWrapper对象,我们可以使用该对象实现链式查询,避免每次都创建QueryWrapper对象。
这个方法的源码实现如下:
default QueryChainWrapper<T> query() {
return ChainWrappers.queryChain(this.getBaseMapper());
}
刚开始还很纠结这个query方法,但值得庆幸的是,该方法的返回值QueryChainWrapper 对象提供的方法和 QueryWrapper方法大致相同,实际使用起来不会有太多学习成本。
例如下面其中几个方法:
public List<T> list()
public T one()
public Integer count()
下面示例采用QueryChainWrapper链式查询,得到性别为男,薪水大于 7000,年龄小于 30 的用户列表。
List<User> userList = userService.query().eq("sex", "男").gt("salary", 7000).lt("age", 30).list();
还有一个updata方法也和链式调用相关,支持链式更改,接口定义如下:
UpdateChainWrapper<T> update();
官方示例:
update().eq("column", value).remove();