LambdaQueryWrapper
lt:
小于
(<) ,
最终的
sql
语句为:
SELECT id,name,password,age,tel FROM user WHERE (age < ?)
gt
:大于
(>),
最终的
SQL
语句为
SELECT id,name,password,age,tel FROM user WHERE (age < ? AND age > ?)
or()
就相当于我们
sql
语句中的
or
关键字
,
不加默认是
and
,最终的
sql
语句为
:
SELECT id,name,password,age,tel FROM user WHERE (age < ? OR age > ?)
User::getAget,
为
lambda
表达式中的,类名
::
方法名,最终的
sql
语句为
:
SELECT id,name,password,age,tel FROM user WHERE (age < ?)
需求
:
查询数据库表中,年龄在
15
岁到18
岁之间的数据
@SpringBootTest
class MybatisplusApplicationTests {
@Autowired
private UserDao userDao;
@Test
public void testGetAll() {
LambdaQueryWrapper<User>qw = new LambdaQueryWrapper<User>();
qw.lt(User::getAge,18);
qw.gt(User::getAge,15);
List<User> userList = userDao.selectList(qw);
System.out.println(userList);
}
需求:查询数据库表中,年龄小于10或年龄大于30的数据
@SpringBootTest
class MybatisplusApplicationTests {
@Autowired
private UserDao userDao;
@Test
public void testGetAll() {
LambdaQueryWrapper<User>qw = new LambdaQueryWrapper<User>();
qw.lt(User::getAge,10).or().gt(User::getAge,30);
List<User> userList = userDao.selectList(qw);
System.out.println(userList);
}
需求:
查询数据库表中,根据输入年龄范围来查询符合条件的记录
用户在输入值的时候,
如果只输入第一个框,说明要查询大于该年龄的用户
如果只输入第二个框,说明要查询小于该年龄的用户
如果两个框都输入了,说明要查询年龄在两个范围之间的用户
@SpringBootTest
class MybatisplusApplicationTests {
@Autowired
private UserDao userDao;
@Test
public void testGetAll() {
//模拟页面传递过来的查询数据
UserQuery uq = new UserQuery();
uq.setAge("10");
uq.setAge2("30");
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
lqw.lt(null!=uq.getAge2(),User::getAge, uq.getAge2());
lqw.gt(null!=uq.getAge(),User::getAge, uq.getAge());
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
}
注:condition为boolean类型,返回true,则添加条件,返回false则不添加条件