当前位置 : 主页 > 编程语言 > java >

Mybatis-Plus查询投影详解

来源:互联网 收集:自由互联 发布时间:2023-03-22
查询投影的作用是在查询数据库时只返回所需的字段,而不是返回全部的字段。这样可以实现以下几个方面的作用: 减少网络传输数据量:只返回需要的字段,可以减少从数据库服务器

查询投影的作用是在查询数据库时只返回所需的字段,而不是返回全部的字段。这样可以实现以下几个方面的作用:

  • 减少网络传输数据量:只返回需要的字段,可以减少从数据库服务器到客户端的网络传输数据量,从而提高查询效率和速度。

  • 提高查询效率:只返回需要的字段,可以减少数据库的工作量,从而提高查询效率和速度。

  • 提高代码的可读性和维护性:只查询需要的字段,可以使查询语句更加简洁,易于理解和维护。

  • 隐藏敏感信息:在某些情况下,可能需要隐藏某些字段的信息,例如密码等敏感信息。通过查询投影,可以选择性地隐藏这些字段,保护敏感信息的安全性。

以下是 select 和 selectPage 方法中查询投影的使用示例:

  • select
List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>() .select(User::getId, User::getName)); users.forEach(System.out::println);

查询结果: image.png

  • selectPage
// 这里的 Page(1, 2) 是指从第一页开始查询,查询两条记录 Page<User> page = userMapper.selectPage(new Page<>(1, 2), new LambdaQueryWrapper<User>().select(User::getId,User::getName)); System.out.println("page.getCurrent() = " + page.getCurrent()); System.out.println("page.getSize() = " + page.getSize()); System.out.println("page.getPages() = " + page.getPages()); System.out.println("page.getTotal() = " + page.getTotal()); System.out.println("page.getRecords() = " + page.getRecords());

查询结果: image.png

使用Mybatis-Plus查询投影和GROUP BY统计个数

表结构

CREATE TABLE t_user ( id VARCHAR2(19) NOT NULL, name VARCHAR2(50) NOT NULL, age NUMBER(3) NOT NULL, CONSTRAINT pk_t_user_id PRIMARY KEY (id) );

插入记录

INSERT INTO t_user ( id, name, age ) VALUES ( 1, 'tom', 19 ); INSERT INTO t_user ( id, name, age ) VALUES ( 2, 'jack', 20 ); INSERT INTO t_user ( id, name, age ) VALUES ( 3, 'lily', 21 ); INSERT INTO t_user ( id, name, age ) VALUES ( 4, 'scott', 19 ); INSERT INTO t_user ( id, name, age ) VALUES ( 5, 'smith', 20 );

domain类

@TableName(value ="T_USER") @Data public class User implements Serializable { /** * 主键 */ @TableId private String id; /** * 用户名 */ private String name; /** * 用户年龄 */ private Integer age; @TableField(exist = false) private static final long serialVersionUID = 1L; }

mapper类

@Mapper public interface UserMapper extends BaseMapper<User> { }

测试代码

@SpringBootTest class MybatisplusQuickstartApplicationTests { @Autowired private UserMapper userMapper; @Test void testSelect() { QueryWrapper<User> userQueryWrapper = new QueryWrapper<User>() .groupBy("age") .select("age, count(*) as count") .orderByAsc("age") .orderByDesc("count"); List<Map<String, Object>> list = userMapper.selectMaps(userQueryWrapper); System.out.println("list = " + list); } }

测试结果 image.png

上一篇:Qz学算法-数据结构篇(非线性结构、树)
下一篇:没有了
网友评论