注意:本教程使用的数据库脚本、数据模型和环境信息请参考 “MyBatis Plus环境准备” 章节,点击下载示例源码。
在 IService 中提供了一个 query 方法,该方法返回 QueryChainWrapper 对象。我们可以使用该对象实现链式查询,避免每次都创建 QueryWrapper 对象。query 方法定义如下:
// 链式查询 普通 QueryChainWrapper<T> query();
QueryChainWrapper 对象提供的方法和 QueryWrapper 方法基本一样,其中下面几个用于获取记录。代码如下:
// 应用查询条件,返回一个结果列表 // 例如:userService.query().eq("sex", "男").gt("salary", 7000).lt("age", 30).list(); public List<T> list() // 应用查询条件,返回一个结果 // 例如:userService.query().eq("user_id", 100).one(); public T one() // 应用查询条件,返回数据记录数 // 例如:userService.query().eq("sex", "男").gt("salary", 7000).lt("age", 30).one(); public Integer count()
(1)下面示例将采用链式查询,查找性别为“男”,薪水大于 7000,年龄小于 30 的用户列表。代码如下:
package com.hxstrive.mybatis_plus.simple_service.chain; import com.hxstrive.mybatis_plus.model.UserBean; import com.hxstrive.mybatis_plus.service.UserService; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; @RunWith(SpringRunner.class) @SpringBootTest class Chain1Test { @Autowired private UserService userService; @Test void contextLoads() { List<UserBean> userBeanList = userService.query() .eq("sex", "男") .gt("salary", 7000) .lt("age", 30).list(); for(UserBean userBean : userBeanList) { System.out.println(userBean); } } }