热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MyBatis笔记04分页查询、resultMap的简单使用

MyBatis笔记04-----分页查询、resultMap的简单使用-分页查询1、分页查询的好处MyBatis作为持久层框架,主要任务就是操作数据库,即是对数据的增、删、查

分页查询

1、分页查询的好处

MyBatis作为持久层框架,主要任务就是操作数据库,即是对数据的增、删、查、改,其中大多数业务是查询功能,这也是这四个操作中最常用操作。所以为了减少数据库的负担,我们使用对数据进行分页查询,这样的话在面对查询大量数据时,每次只需要查询小部分数据,随之查询的次数随增加了。

2、使用分页的方式

第一种(常用):使用LIMIT

通用语法:

select * from [表名] limit stratIndex,pageSize;

stratIndex:开始下标

pageSize:一页的大小

如:select * from stu limit 5,10;

表示:查询表中的第6个数据,保存10条记录

特殊语法

  • select * from [表名] limit startIndex,-1;

stratIndex:开始下标

-1:表示查询到最后一条数据结束

如:select * from stu limit 15,-1;

表示:查询表中数据从第16个数据开始到表中最后一条数据为止

  • select * from [表名] limit 0,pageSize;

0:从表中第一条数据开始查询

pageSize:一页的大小

如:select * from stu limit 5;

表示:查询表中前5条记录

3、使用分页的例子

  • StuMapper1接口
/**
     * 分页查询
     * @param map 传入分页中的stratIndex,pageSize参数(使用map传入比较方便)
     * @return 返回查询的结果
     */
    List selectLimit1(Map map);
  • StuMapper1.xml文件

    
  • 在核心配置文件中注册mapper

      
    
  • 测试
@Test
    public void test01(){
        SqlSession sqlSession = MybatisUntils.getSqlSession();
        StuMapper1 mapper = sqlSession.getMapper(StuMapper1.class);
        Map map = new HashMap<>();
        map.put("stratIndex",0);
        map.put("pageSize",1);
        List stus = mapper.selectLimit1(map);
        for (Stu1 stu:stus) {
            System.out.println(stu);
        }
        sqlSession.close();
    }

对于上面传参是Map集合---------万能Map集合

上面的StuMapper接口也可以写为

List selectLimit(int stratIndex,int pageSize)

当有多个参数的时候,可以尝试着使用Map集合作为参数,如果参数比较少的话,直接传参即可

resultMap标签的简单使用

1、为什么使用

答:当实体类中的属性名和表中的字段名不一致时需要使用resultMap,使用它的目的是为了映射(描述)实体类中的属性名和表中字段名的关系

2、例子:当实体类中的属性名和表中字段不一致时会出现的问题:

  • 表中字段:

  • 实体类中属性:关注属性password
@Alias("stu1")
@Data
public class Stu1 {
    private int sno;
    private String sname;
    private int sage;
    private String saddress;
    private String password;//在表中的字段是spwd,与表中的字段不一致
}
  • 查询所有学生信息

StuMapper1接口

List selectAll();

StuMapper.xml文件

  • 测试结果
@Test
    public void test02(){
        SqlSession sqlSession = MybatisUntils.getSqlSession();
        StuMapper1 mapper = sqlSession.getMapper(StuMapper1.class);
        List stus = mapper.selectAll();
        for (Stu1 stu:stus) {
            System.out.println(stu);
        }
        sqlSession.close();
    }

 这种结果明显和我们想要的结果是不一样的,出现这种结果的原因:

  在执行select * from stu语句时,会查询得到数据库中的学生信息结果集,然后将得到的学生信息结果集 找到对应的实体类,通过对应的set方法把结果集来赋值给类中的属性,然而这里只有setPassword(),找不到对应的setSpwd()所以password为null。

3、解决方案有二种

第一种:自动映射(在SQL映射语句使用as)

as:给表中字段起别名,即将表中的字段名起别名为java实体类中的属性名,

第二种:手动映射(使用resultMap)(推荐使用)


    
        
        
        
        
        
    

主要就是用来描述类中的属性名和数据库表中字段名之间的关系即可。若是自动映射和手动映射一起使用,则先是自动映射再是手动映射。

resultMap的简单介绍

1、概述

  • resultMap是mybatis最重要最强大的元素,它可以让你从90%的JDBC ResultSets结果集数据提取数据代码中解放出来,而且它可以完成一些操作是JDBC不支持的操作。当编写一些比较复杂SQL映射语句代码时(如:多表联系查询),一份resultMap可以实现同功能的数长达千行代码。
  • resultMap设计思想:简单的SQL映射语句不需要用到resultMap,复杂的SQL映射语句只需要通过resultMap来描述他们之间的关系即可

2、resultMap中的属性

id属性:唯一标识,它的值==如

推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
author-avatar
制霸
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有