一篇文章带你掌握MyBatis简化框架——MyBatisPlus( 十 )

查询投影我们选择性的查询数据库列称为查询投影,接下来让我们来介绍查询投影的实现方法
查询投影的实现我们大致分为两种类型:

  1. 查询结果包含模型类中部分属性
package com.itheima;import com.baomidou.mybatisplus.core.conditions.Wrapper;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.itheima.dao.UserDao;import com.itheima.domain.User;import com.itheima.domain.query.UserQuery;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import java.util.List;import java.util.Map;@SpringBootTestclass Mybatisplus02DqlApplicationTests {    @Autowired    private UserDao userDao;    @Test    void testGetAll() {        // 查询投影     // 当我们所查询的内容属于实体类中包含的属性,我们可以采用QW或LambdaQW来实现     // 我们大部分采用LambdaQW来实现,因为带有自动识别,不易出错        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();     // 我们采用select方法来添加查询种类,LambdaQueryWrapper采用Lambda表达式添加        lqw.select(User::getId,User::getName,User::getAge);        QueryWrapper<User> lqw = new QueryWrapper<User>();        // 我们采用select方法来添加查询种类,QueryWrapper采用String添加        lqw.select("id","name","age","tel");        List<User> userList = userDao.selectList(lqw);        System.out.println(userList);    }}
  1. 查询结果包含模型类中未定义属性
package com.itheima;import com.baomidou.mybatisplus.core.conditions.Wrapper;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.itheima.dao.UserDao;import com.itheima.domain.User;import com.itheima.domain.query.UserQuery;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import java.util.List;import java.util.Map;@SpringBootTestclass Mybatisplus02DqlApplicationTests {    @Autowired    private UserDao userDao;    @Test    void testGetAll() {        // 查询投影        // 未定义的属性我们只能采用QueryWrapper的String字符串来书写,例如count(*)和分组条件        QueryWrapper<User> lqw = new QueryWrapper<User>();        lqw.select("count(*) as count, tel");        // QueryWrapper提供了分组方法groupBy,参数为String类型的数据库列名        lqw.groupBy("tel");        List<Map<String, Object>> userList = userDao.selectMaps(lqw);        System.out.println(userList);    }}

经验总结扩展阅读