首页 > 其他分享 >Mybatis-Plus查询投影详解

Mybatis-Plus查询投影详解

时间:2023-03-17 21:01:26浏览次数:41  
标签:name age id 查询 println 详解 Plus Mybatis page

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

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

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

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

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

以下是 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

标签:name,age,id,查询,println,详解,Plus,Mybatis,page
From: https://blog.51cto.com/learningfish/6128395

相关文章

  • 尚硅谷MyBatis_1_Mybatis简介
    尚硅谷MyBatis_1_Mybatis简介1.MyBatis历史MyBatis最初是Apache的一个开源项目iBatis,2010年6月这个项目由ApacheSoftwareFoundation迁移到了GoogleCode。随着开发团......
  • bs4详解,css选择器,selenium基本使用,无界面浏览器,selenium其它用法
    bs4详解,css选择器,selenium基本使用,无界面浏览器,selenium其它用法bs4详解'''bs4:全称beautifulsoup4,从HTML或者HTML文件中提取数据的Python库,用来解析爬取回来的xml安......
  • Keycloak详解
    简述keycloak是一个针对现代应用程序和服务的开源身份和访问管理解决方案,本质就是个中间件,keycloak支持单点登录SSO,服务可通过OpenIDConnect、OAuth2.0等协议对接......
  • MyBatis
    MyBatis1简介1.1什么是MyBatis优秀的持久层框架支持定制化SQL、存储过程以及高级映射MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集MyBatis可以......
  • 狂神说的MyBatisPlus笔记 -https://blog.csdn.net/weixin_43070148/article/details/1
    狂神说的MyBatisPlus笔记https://blog.csdn.net/weixin_43070148/article/details/127313367学习MyBatis-Plus之前要先学MyBatis–>Spring—>SpringMVC为什么要学它?MyB......
  • 详解ResNet 网络,如何让网络变得更“深”了
    摘要:残差网络(ResNet)的提出是为了解决深度神经网络的“退化”(优化)问题。ResNet通过设计残差块结构,调整模型结构,让更深的模型能够有效训练更训练。本文分享自华为云社区......
  • js中的promise详解【转载】
    一、概述Promise是异步编程的一种解决方案,可以替代传统的解决方案--回调函数和事件。ES6统一了用法,并原生提供了Promise对象。作为对象,Promise有以下两个特点:(1)对......
  • k8s架构及服务详解
    k8s架构及服务详解 目录1.1.容器是什么1.2.Namespace1.3.rootfs5.1.Service介绍5.1.1.Serice简介5.1.1.1什么是Service5.1.1.2.Service的创建5.1.1.3.检测......
  • Linux下的tar归档及解压缩功能详解
    (Linux下的tar归档及解压缩功能详解)一、Linux下解压缩工具1.tar命令Unix和类Unix系统上的压缩打包工具,可以将多个文件合并为一个文件,打包后的文件后缀亦为“tar”。tar......
  • 深度学习模型训练和关键参数调优详解
    本文将通过针对特定场景任务从模型选择、模型训练、超参优化、效果展示这四个方面与各位读者分享模型开发的一些心得。参考资料:​​最实用的项目开发全流程!从自建数据集到......