SpringBoot整合MyBatis四种常用的分页方式

news2024/12/28 7:02:34

目录

方式1

一、准备工作

1. 创建表结构

2. 导入表数据

3. 导入pom.xml依赖

4. 配置application.yml文件

5. 创建公用的实体类

项目结构

2. 创建controller层

3. 创建service层 

4. 创建mapper层 

5. 创建xml文件 

6. 使用postman进行测试,测试结果如下

1. 项目整体结构

1. 创建controller层

2. 创建Service层

3. 创建Mapper层

5. 编写xml文件 

三、借助MyBatis提供的第三方PageHelper分页插件2 

1. 依赖pom.xml

2. 配置application.properties

3. 实现分页功能

四、借助MyBatis-Plus拦截器进行分页查询

1. 项目整体结构

2. 编写主配置类

3. 创建controller层

4. 创建Service层

5. 创建Mapper层

6. 使用postman进行测试,测试结果如下 

五、借助MyBabtis提供的RowBounds进行分页查询

1. 项目整体结构

2. 创建controller层

3. 创建Service层

4. 创建Mapper层

5. 创建xml文件

6. 使用postman进行测试,测试结果如下 


方式1

一、准备工作

1. 创建表结构
CREATE TABLE `order_info`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `info` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `time` datetime NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
2. 导入表数据
INSERT INTO `order_info` VALUES (1, '购买了手机', '2022-08-25 05:34:17');
INSERT INTO `order_info` VALUES (2, '购买了电脑', '2022-08-25 07:30:39');
INSERT INTO `order_info` VALUES (3, '购买了护手霜', '2022-08-17 22:35:07');
INSERT INTO `order_info` VALUES (4, '购买了泡面', '2022-08-23 08:35:36');
INSERT INTO `order_info` VALUES (5, '购买了纸巾', '2022-07-21 15:26:06');
INSERT INTO `order_info` VALUES (6, '购买了自热米饭', '2021-06-20 13:21:06');
INSERT INTO `order_info` VALUES (7, '购买了移动硬盘', '2022-06-11 11:22:03');
INSERT INTO `order_info` VALUES (8, '购买了狗粮', '2022-05-10 11:21:02');
INSERT INTO `order_info` VALUES (9, '购买了猫粮', '2022-04-10 09:11:02');
INSERT INTO `order_info` VALUES (10, '购买了遥控器', '2022-08-22 22:35:07');
INSERT INTO `order_info` VALUES (11, '购买了裤子', '2022-08-15 08:35:36');
INSERT INTO `order_info` VALUES (12, '购买了鞋子', '2022-08-21 08:35:36');
INSERT INTO `order_info` VALUES (13, '购买了水杯', '2022-08-26 19:39:19');
3. 导入pom.xml依赖
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
 
        <!--Mybatis依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
 
        <!--PageHelper依赖-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.3</version>
        </dependency>
 
        <!--Mybatis-Plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>
    </dependencies>
4. 配置application.yml文件
server:
  port: 8080
 
spring:
  datasource:
    username: 你的mysql用户名
    password: 你的mysql密码
    url: jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
 
mybatis:
  mapper-locations: classpath:mapping/*.xml
5. 创建公用的实体类

 
import java.util.Date;
 
 
public class OrderInfo {
 
    private int id;
    private String info;
    private Date time;
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getInfo() {
        return info;
    }
 
    public void setInfo(String info) {
        this.info = info;
    }
 
    public Date getTime() {
        return time;
    }
 
    public void setTime(Date time) {
        this.time = time;
    }
 
    @Override
    public String toString() {
        return "OrderInfo{" +
                "id=" + id +
                ", info='" + info + '\'' +
                ", time=" + time +
                '}';
    }
 
 
}

项目结构

2. 创建controller层
package com.ithuang.demo.controller;
 
import com.ithuang.demo.bean.OrderInfo;
import com.ithuang.demo.service.OrderInfoService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.Resource;
import java.util.List;
 
@RestController
public class OrderInfoController {
 
    @Resource
    private OrderInfoService orderInfoService;
 
    @GetMapping("/getOrderInfoList")
    public List<OrderInfo> getOrderInfoList(@RequestParam(value = "pageNow",defaultValue = "1") int pageNow,
                                            @RequestParam(value = "pageSize",defaultValue = "3") int pageSize){
 
        return orderInfoService.getOrderInfoList(pageNow,pageSize);
    }
}
3. 创建service层 
import com.ithuang.demo.bean.OrderInfo;
import com.ithuang.demo.mapper.OrderInfoMapper;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.List;
 
@Service
public class OrderInfoService {
 
    @Resource
    private OrderInfoMapper orderInfoMapper;
 
    public List<OrderInfo> getOrderInfoList(int pageNow, int pageSize) {
        if(pageNow == 1){
            pageNow = 0;
        }
        return orderInfoMapper.getOrderInfoList(pageNow,pageSize);
    }
}
4. 创建mapper层 
package com.ithuang.demo.mapper;
 
import com.ithuang.demo.bean.OrderInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
 
import java.util.List;
 
@Mapper
public interface OrderInfoMapper {
 
    List<OrderInfo> getOrderInfoList(@Param("pageNow") int pageNow,@Param("pageSize") int pageSize);
}
5. 创建xml文件 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ithuang.demo.mapper.OrderInfoMapper">
    <select id="getOrderInfoList" parameterType="int" resultType="com.ithuang.demo.bean.OrderInfo">
        SELECT * FROM order_info limit #{pageNow},#{pageSize}
    </select>
</mapper>
6. 使用postman进行测试,测试结果如下

       在MyBatis中配置了分页拦截器(PageInterceptor),就是在执行相关的Sql之前会做一些拦截的操作,这里通过调用startPage的方法,其实就是在查询getOrderInfoList之前会自动加上limit;这里通过setLocalPage方法,将分页信息保存在当前之后线程当中,查询方法与之处于同一个线程,共享ThreadLocal当中的数据,最后将getOrderInfoList查询好的数据结果放到PageInfo当中即可。

扩展:PageHelper.startPage(int PageNum,int PageSize):用来设置页面的位置和展示的数据条目数,我们设置每页展示5条数据。PageInfo用来封装页面信息,返回给前台界面。PageInfo中的一些我们需要用到的参数如下表:
PageInfo.list                                            结果集
PageInfo.pageNum                                 当前页码
PageInfo.pageSize                                  当前页面显示的数据条目
PageInfo.pages                                       总页数
PageInfo.total                                          数据的总条目数
PageInfo.prePage                                   上一页
PageInfo.nextPage                                 下一页
PageInfo.isFirstPage                              是否为第一页
PageInfo.isLastPage                              是否为最后一页
PageInfo.hasPreviousPage                   是否有上一页
PageHelper.hasNextPage                       是否有下一页

(1)引入pom.xml

<!-- 分页插件 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>

(2)打开application.properties,添加如下几行配置信息

#分页插件
pagehelper.helper-dialect=mysql
pagehelper.params=count=countSql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true

1. 项目整体结构

1. 创建controller层

Mapper文件中, SQL不用增加 limit分页指令,需要什么直接查就可以,Pagehelper 可以自动实现分页


 
import com.ithuang.demo.bean.OrderInfo;
import com.ithuang.demo.service.OrderInfoService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.Resource;
import java.util.List;
 
@RestController
public class OrderInfoController {
 
    @Resource
    private OrderInfoService orderInfoService;
 
    @GetMapping("/getOrderInfoList")
    public List<OrderInfo> getOrderInfoList(@RequestParam(value = "pageNow",defaultValue = "1") int pageNow,
                                            @RequestParam(value = "pageSize",defaultValue = "3") int pageSize){
 
        return orderInfoService.getOrderInfoList(pageNow,pageSize);
    }
}
2. 创建Service层

 
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ithuang.demo.bean.OrderInfo;
import com.ithuang.demo.mapper.OrderInfoMapper;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.List;
 
@Service
public class OrderInfoService {
 
    @Resource
    private OrderInfoMapper orderInfoMapper;
 
    public List<OrderInfo> getOrderInfoList(int pageNow, int pageSize) {
        PageHelper.startPage(pageNow,pageSize);
        List<OrderInfo> orderInfoList = orderInfoMapper.getOrderInfoList();
        PageInfo<OrderInfo> userPageInfo = new PageInfo<>(orderInfoList);
        return userPageInfo.getList();
    }
}
3. 创建Mapper层

import com.ithuang.demo.bean.OrderInfo;
import org.apache.ibatis.annotations.Mapper;
 
import java.util.List;
 
@Mapper
public interface OrderInfoMapper {
 
    List<OrderInfo> getOrderInfoList();
}
5. 编写xml文件 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ithuang.demo.mapper.OrderInfoMapper">
    <select id="getOrderInfoList" parameterType="int" resultType="com.ithuang.demo.bean.OrderInfo">
        SELECT * FROM order_info
    </select>
</mapper>

三、借助MyBatis提供的第三方PageHelper分页插件2 

1. 依赖pom.xml
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.0</version>
</dependency>
2. 配置application.properties
#分页插件
pagehelper.helper-dialect=mysql
pagehelper.params=count=countSql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
3. 实现分页功能

①首页超链接

<a th:href="@{/get/page/1}">显示分页数据</a>

②controller方法

@RequestMapping("/get/page/{pageNo}")
public String getPage(
        @PathVariable("pageNo") Integer pageNo, 
        Model model) {
 
    // PageInfo 对象封装了和分页相关的所有信息
    PageInfo<Emp> pageInfo = empService.getPageInfo(pageNo);
    
    // 将 PageInfo 对象存入模型
    model.addAttribute("pageInfo", pageInfo);
    
    return "emp-page";
}

③service 方法

@Override
public PageInfo<Emp> getPageInfo(Integer pageNo) {
 
    // 1、确定每页显示数据的条数
    int pageSize = 5;
 
    // 2、设定分页数据:开启分页功能。开启后,后面执行的 SELECT 语句会自动被附加 LIMIT 子句,
    // 而且会自动查询总记录数
    PageHelper.startPage(pageNo, pageSize);
 
    // 3、正常执行查询
    List<Emp> empList = empMapper.selectAll();
 
    // 4、封装为 PageInfo 对象返回
    return new PageInfo<>(empList);
}

④页面展示

<tr>
    <td colspan="5">
 
        <span th:each="targetNum : ${pageInfo.navigatepageNums}">
 
            <!-- 不是当前页显示为超链接 -->
            <a th:if="${targetNum != pageInfo.pageNum}"
               th:href="@{/employee/page/}+${targetNum}"
               th:text="'['+${targetNum}+']'">目标页面的页码</a>
 
            <!-- 是当前页不需要显示为超链接 -->
            <span th:if="${targetNum == pageInfo.pageNum}" th:text="'['+${targetNum}+']'">当前页页码</span>
 
        </span>
    </td>
</tr>
<tr>
    <td colspan="5">
        <span th:if="${pageInfo.hasPreviousPage}">
            <a th:href="@{/employee/page/1}">首页</a>
            <a th:href="@{/employee/page/}+${pageInfo.prePage}">上一页</a>
        </span>
 
        [[${pageInfo.pageNum}]]/[[${pageInfo.pages}]]
        [[${pageInfo.pageNum}+'/'+${pageInfo.pages}]]
 
        <span th:if="${pageInfo.hasNextPage}">
            <a th:href="@{/employee/page/}+${pageInfo.nextPage}">下一页</a>
            <a th:href="@{/employee/page/}+${pageInfo.pages}">末页</a>
        </span>
    </td>
</tr>
<tr>
    <td colspan="5">
        <!-- 绑定值改变事件响应函数 -->
        <input id="jumpToPageNumInput" type="text" name="jumpToPageNum" placeholder="请输入您想直接跳转的页码" />
    </td>
</tr>

四、借助MyBatis-Plus拦截器进行分页查询

1. 项目整体结构

2. 编写主配置类
package com.ithuang.demo.config;
 
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class MybatisPlusConfig {
 
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}
3. 创建controller层
package com.ithuang.demo.controller;
 
import com.ithuang.demo.bean.OrderInfo;
import com.ithuang.demo.service.OrderInfoService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.Resource;
import java.util.List;
 
@RestController
public class OrderInfoController {
 
    @Resource
    private OrderInfoService orderInfoService;
 
    @GetMapping("/getOrderInfoList")
    public List<OrderInfo> getOrderInfoList(@RequestParam(value = "pageNow",defaultValue = "1") int pageNow,
                                            @RequestParam(value = "pageSize",defaultValue = "3") int pageSize){
 
        return orderInfoService.getOrderInfoList(pageNow,pageSize);
    }
}
4. 创建Service层
package com.ithuang.demo.service;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ithuang.demo.bean.OrderInfo;
import com.ithuang.demo.mapper.OrderInfoMapper;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.List;
 
@Service
public class OrderInfoService {
 
    @Resource
    private OrderInfoMapper orderInfoMapper;
 
    public List<OrderInfo> getOrderInfoList(int pageNow, int pageSize) {
        Page<OrderInfo> page= new Page<>(pageNow,pageSize);
        IPage<OrderInfo> iPage = orderInfoMapper.selectPage(page,null);
        return iPage.getRecords();
    }
}
5. 创建Mapper层
package com.ithuang.demo.mapper;
 
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ithuang.demo.bean.OrderInfo;
import org.apache.ibatis.annotations.Mapper;
 
 
@Mapper
public interface OrderInfoMapper extends BaseMapper<OrderInfo> {
 
}
6. 使用postman进行测试,测试结果如下 

五、借助MyBabtis提供的RowBounds进行分页查询

RowBounds它是在SQL执行的结果进行截取分页的,所以不适合大量数据的截取和分页,它适合在查询较少的结果集当中使用。

1. 项目整体结构

2. 创建controller层
package com.ithuang.demo.controller;
 
import com.ithuang.demo.bean.OrderInfo;
import com.ithuang.demo.service.OrderInfoService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.Resource;
import java.util.List;
 
@RestController
public class OrderInfoController {
 
    @Resource
    private OrderInfoService orderInfoService;
 
    @GetMapping("/getOrderInfoList")
    public List<OrderInfo> getOrderInfoList(@RequestParam(value = "pageNow",defaultValue = "1") int pageNow,
                                            @RequestParam(value = "pageSize",defaultValue = "3") int pageSize){
 
        return orderInfoService.getOrderInfoList(pageNow,pageSize);
    }
}
3. 创建Service层
package com.ithuang.demo.service;
 
import com.ithuang.demo.bean.OrderInfo;
import com.ithuang.demo.mapper.OrderInfoMapper;
import org.apache.ibatis.session.RowBounds;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.List;
 
@Service
public class OrderInfoService {
 
    @Resource
    private OrderInfoMapper orderInfoMapper;
 
    public List<OrderInfo> getOrderInfoList(int pageNow, int pageSize) {
        RowBounds rowBounds = new RowBounds(pageNow,pageSize);
        return orderInfoMapper.getOrderInfoList(rowBounds);
    }
}
4. 创建Mapper层
package com.ithuang.demo.mapper;
 
import com.ithuang.demo.bean.OrderInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.session.RowBounds;
 
import java.util.List;
 
@Mapper
public interface OrderInfoMapper {
 
    List<OrderInfo> getOrderInfoList(RowBounds rowBounds);
}
5. 创建xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ithuang.demo.mapper.OrderInfoMapper">
    <select id="getOrderInfoList" resultType="com.ithuang.demo.bean.OrderInfo">
        SELECT * FROM order_info
    </select>
</mapper>
6. 使用postman进行测试,测试结果如下 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1571046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于JAVA+SpringBoot+Vue的前后端分离的大学健康档案管理系统

一、项目背景介绍&#xff1a; 随着社会的发展和科技的进步&#xff0c;人们越来越重视健康问题。大学作为培养人才的摇篮&#xff0c;学生的健康状况直接影响到国家的未来。然而&#xff0c;传统的大学健康档案管理方式存在诸多问题&#xff0c;如信息不透明、数据分散、更新不…

从零开始为香橙派orangepi zero 3移植主线linux——2.kernel + rootfs

从零开始为香橙派orangepi zero 3移植主线linux——2.kernel rootfs 参考文章&#xff1a;一、linux kernel移植二、根文件系统2.1 buildroot构建1.修改toolchain下的交叉编译链2.修改系统配置3.去除内置kernel和uboot编译4.添加rootfs.tar格式的输出 2.2 ubuntu-base移植 三、…

WebAuthn:更好地保护线上敏感信息

1. 引言 2023年知乎博客 WebAuthn: 真正的无密码身份认证 总结得很赞。 在数字时代&#xff0c;密码已成为人们日常生活和在线活动中不可或缺的一部分。尽管互联网已经发展了 20 多年&#xff0c;许多方面都有了巨大的改进&#xff0c;但只有密码&#xff0c;还是 20 年前的用…

【数据结构】--- 探索栈和队列的奥秘

关注小庄 顿顿解馋૮(˶ᵔ ᵕ ᵔ˶)ა &#x1f4a1;个人主页&#xff1a;9ilk &#x1f4a1;专栏&#xff1a;数据结构之旅 上回我们学习了顺序表和链表&#xff0c;今天博主来讲解两个新的数据结构 — 栈和队列 &#xff0c; 请放心食用 文章目录 &#x1f3e0; 栈&#x1…

牛客 2024春招冲刺题单 ONT102 牛牛的果实排序【simpe 要知道如何判断是否是质数 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/975a263e2ae34a669354e0bd64db9e2a 核心 需要牢牢记住下面的代码//判断是否为质数public boolean isPrime(int n){if(n1) return false;if(n2 || n3) return true;if(n%6!1 && n%6!5) return false; /…

C++(语法以及易错点2)

1.内联函数 1.1 概念 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调 用建立栈帧的开销&#xff0c;内联函数提升程序运行的效率。 ​int ADD(int a,int b) {return ab; }​ 1.2 特性 1. inline是一种以空间换时间…

spring security6重写登陆验证

spring security的认证流程 2. 从文档上可以看出来&#xff0c;UsernamePasswordAuthenticationFilter和AuthenticationManager是认证的关键步骤&#xff0c;/login传过来的username和password由UsernamePasswordAuthenticationFilter接收处理成UsernamePasswordAuthenticatio…

设计模式总结-组合模式

组合设计模式 模式动机模式定义模式结构组合模式实例与解析实例一&#xff1a;水果盘实例二&#xff1a;文件浏览 更复杂的组合总结 模式动机 对于树形结构&#xff0c;当容器对象&#xff08;如文件夹&#xff09;的某一个方法被调用时&#xff0c;将遍历整个树形结构&#x…

基于SSM的品牌银饰售卖平台(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的品牌银饰售卖平台&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring …

LeetCode - 边积分最高的节点

2374. 边积分最高的节点 这是一个有向图&#xff0c;且每个节点都只有一条出边&#xff0c;指向0的边有1&#xff0c;2&#xff0c;3&#xff0c;4 10&#xff0c; 指向7的有5&#xff0c;6 11. 我们只需要一次遍历就可以解决&#xff0c;先搞一张哈希表&#xff0c;k存节点…

docker安装nacos,单例模式(standalone),使用内置的derby数据库,简易安装

文章目录 前言安装创建文件夹docker指令安装docker指令安装-瘦身版 制作docker-compose.yaml文件查看页面 前言 nacos作为主流的服务发现中心和配置中心&#xff0c;广泛应用于springcloud框架中&#xff0c;现在就让我们一起简易的部署一个单例模式的nacos&#xff0c;版本可…

Qt+OpenGL-part3

1-4EBO画矩形_哔哩哔哩_bilibili 可以绘制两个三角形来组成一个矩形&#xff08;OpenGL主要处理三角形&#xff09; 直接画两个三角形&#xff1a; #include "openglwidget.h" #include <QDebug>unsigned int VBO,VAO; unsigned int shaderProgram;//顶点着…

快排序解读

排序算法是计算机科学中不可或缺的一部分&#xff0c;它们在各种数据处理场景中发挥着关键作用。在众多排序算法中&#xff0c;快速排序以其高效的性能和简洁的实现成为了许多程序员的首选。今天&#xff0c;我们就来深入剖析快速排序算法&#xff0c;了解其原理、实现方式以及…

【【萌新的Pytorch入门之Python的学习】】

学习记录 - 参考记录来自B站up主 -爆肝杰哥 ① NumPy 包为 Python 加上了关键的数组变量类型&#xff0c;弥补了 Python 的不足&#xff1b; ② Pandas 包在 NumPy 数组的基础上添加了与 Excel 类似的行列标签&#xff1b; ③ Matplotlib 库借鉴 Matlab&#xff0c;帮 Python 具…

mysql 基本查询

学习了mysql函数&#xff0c;接下来学习mysql基本查询。 1&#xff0c;基本查询语句 MySQL从数据表中查询数据的基本语句为SELECT 语句。SELECT语句的基本格式是&#xff1a; SELECT (*I <字段列表>} FROM <表1>,<表2>..[WHERE<表达式> [GROUP BY <…

C++入门(以c为基础)——学习笔记2

1.引用 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空 间。在语法层面&#xff0c;我们认为它和它引用的变量共用同一块内存空间。 可以取多个别名&#xff0c;也可以给别名取别名。 b/c/d本质都是别名&#…

QA测试开发工程师面试题满分问答3: python的深拷贝和浅拷贝问题

在 Python 中&#xff0c;深拷贝&#xff08;deep copy&#xff09;和浅拷贝&#xff08;shallow copy&#xff09;是用于创建对象副本的两种不同方式。 浅拷贝是创建一个新的对象&#xff0c;该对象与原始对象的内容相同&#xff08;包括内部嵌套对象的引用&#xff09;&…

SSM框架学习——了解Spring与Eclipse创建Maven项目

了解Spring 什么是Spring Spirng是分层的JavaSE/EE全栈轻量级开源框架&#xff0c;以控制反转IoC和面向切面编程AOP为内核&#xff0c;使用基本的JavaBean来完成EJB的工作。 Spring框架采用分层架构&#xff0c;它的一些列功能被分为若干个模块。 上图中的红色背景模块为本…

提示工程概要

提示工程 1. 两大原则 原则 1&#xff1a;编写清晰具体的说明 使用分隔符 三引号&#xff1a;“”"三个反引号&#xff1a;三个破折号&#xff1a;—尖括号&#xff1a;<>XML标签&#xff1a; 要求结构化输出 HTMLJSONXMLPython字典 检查条件是否满足 检查执行…

C++ 类和对象(初篇)

类的引入 C语言中&#xff0c;结构体中只能定义变量&#xff0c;在C中&#xff0c;结构体内不仅可以定义变量&#xff0c;也可以定义函数。 而为了区分C和C我们将结构体重新命名成class去定义 类的定义 标准格式&#xff1a; class className {// 类体&#xff1a;由成员函…