应用场景:只需要返回个别字段
场景一:
Java代码:
@Test
public void selectByWrapperMaps(){
QueryWrapper<User> queryWrapper = new QueryWrapper();
queryWrapper.select("name","age").like("name","雨").lt("age",40);
List<Map<String, Object>> userList = userMapper.selectMaps(queryWrapper);
userList.forEach(System.out::println);
}
输出结果:
DEBUG==> Preparing: SELECT name,age FROM user WHERE (name LIKE ? AND age < ?)
DEBUG==> Parameters: %雨%(String), 40(Integer)
TRACE<== Columns: name, age
TRACE<== Row: 张雨琪, 39
TRACE<== Row: 刘红雨, 28
DEBUG<== Total: 2
{name=张雨琪, age=39}
{name=刘红雨, age=28}
场景二:
按照直属上级分组,查询每组平均年龄、最大年龄、最小年龄。并且只取年龄综合小于500的组。
select avg(age) avg_age,min(age) min_age,max(age) max_age from user group by manager_id having sum(age) < 500
Java代码:
@Test
public void selectByWrapperMaps2(){
QueryWrapper<User> queryWrapper = new QueryWrapper();
queryWrapper.select("avg(age) avg_age","min(age) min_age","max(age) max_age")
.groupBy("manager_id").having("sum(age)<{0}",500);
List<Map<String, Object>> userList = userMapper.selectMaps(queryWrapper);
userList.forEach(System.out::println);
}
输出结果:
DEBUG==> Preparing: SELECT avg(age) avg_age,min(age) min_age,max(age) max_age FROM user GROUP BY manager_id HAVING sum(age)<?
DEBUG==> Parameters: 500(Integer)
TRACE<== Columns: avg_age, min_age, max_age
TRACE<== Row: 40.0000, 40, 40
TRACE<== Row: 26.7143, 25, 31
TRACE<== Row: 25.0000, 25, 25
TRACE<== Row: 28.0000, 28, 28
TRACE<== Row: 33.5000, 28, 39
DEBUG<== Total: 5
{max_age=40, avg_age=40.0000, min_age=40}
{max_age=31, avg_age=26.7143, min_age=25}
{max_age=25, avg_age=25.0000, min_age=25}
{max_age=28, avg_age=28.0000, min_age=28}
{max_age=39, avg_age=33.5000, min_age=28}
场景三:只返回一列
Java代码:
@Test
public void selectByWrapperObjs(){
QueryWrapper<User> queryWrapper = new QueryWrapper();
queryWrapper.select("id","name").like("name","雨").lt("age",40);
List<Object> userList = userMapper.selectObjs(queryWrapper);
userList.forEach(System.out::println);
}
输出结果:
DEBUG==> Preparing: SELECT id,name FROM user WHERE (name LIKE ? AND age < ?)
DEBUG==> Parameters: %雨%(String), 40(Integer)
TRACE<== Columns: id, name
TRACE<== Row: 1094590409767661570, 张雨琪
TRACE<== Row: 1094592041087729666, 刘红雨
DEBUG<== Total: 2
1094590409767661570
1094592041087729666
场景四:返回总数
Java代码:
@Test
public void selectByWrapperCount(){
QueryWrapper<User> queryWrapper = new QueryWrapper();
queryWrapper.like("name","雨").lt("age",40);
Integer count = userMapper.selectCount(queryWrapper);
System.out.println("总记录数" + count);
}
输出结果:
DEBUG==> Preparing: SELECT COUNT( 1 ) FROM user WHERE (name LIKE ? AND age < ?)
DEBUG==> Parameters: %雨%(String), 40(Integer)
TRACE<== Columns: COUNT( 1 )
TRACE<== Row: 2
DEBUG<== Total: 1
总记录数2
场景五:只返回一条结果,多余一条会报错
Java代码:
@Test
public void selectByWrapperOne(){
QueryWrapper<User> queryWrapper = new QueryWrapper();
queryWrapper.like("name","刘红雨").lt("age",40);
User user = userMapper.selectOne(queryWrapper);
System.out.println(user);
}
输出结果:
DEBUG==> Preparing: SELECT id,name,age,email,manager_id,create_time FROM user WHERE (name LIKE ? AND age < ?)
DEBUG==> Parameters: %刘红雨%(String), 40(Integer)
TRACE<== Columns: id, name, age, email, manager_id, create_time
TRACE<== Row: 1094592041087729666, 刘红雨, 28, lhy@baomidou.com, 1088248166370832856, 2019-01-11 14:20:20.0
DEBUG<== Total: 1
User(id=1094592041087729666, name=刘红雨, age=28, email=lhy@baomidou.com, managerId=1088248166370832856, createTime=2019-01-11T14:20:20)