十八,Spring Boot 整合 MyBatis-Plus 的详细配置

十八,Spring Boot 整合 MyBatis-Plus 的详细配置

文章目录

  • 十八,Spring Boot 整合 MyBatis-Plus 的详细配置
  • 1. MyBatis-Plus 的基本介绍
  • 2. Spring Boot 整合 MyBatis Plus 的详细配置
  • 3. Spring Boot 整合 MyBatis plus 注意事项和细节
  • 4. MyBatisx 插件的安装和使用
    • 4.1 MyBatisx 核心功能
      • 4.1.1 XML 映射跳转
      • 4.1.2 代码生成
      • 4.1.3 重置模板
      • 4.1.4 JPA 风格提示
      • 4.1.5 生成的表名与预期不符?
  • 5. 最后:


1. MyBatis-Plus 的基本介绍

MyBatis-Plus 官网文档:https://baomidou.com/

在这里插入图片描述

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

在这里插入图片描述

MyBatis puls (简称 MP) 是一个Mybatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发,提供效率而生。

强大的CRUD操作:内置通用Mapper,通用 Service,通过少量配置即可实现单表大部分的CRUD操作,更有强大的条件构造器,满足各类使用需求

关于 MyBatis Plus 的更多详细内容,大家可以移步至✏️✏️✏️ MyBatis-Plus_ChinaRainbowSea的博客-CSDN博客

2. Spring Boot 整合 MyBatis Plus 的详细配置

  1. 准备数据库,和数据表。如下图所示:

在这里插入图片描述


CREATE DATABASE `springboot_mybatispuls`USE `springboot_mybatispuls`CREATE TABLE `monster` (
`id` int not null auto_increment,
`age` int not null,
`birthday` DATE DEFAULT NULL,
`email` VARCHAR(255) DEFAULT NULL,
`gender` CHAR(1) DEFAULT null,
`name` VARCHAR(255) DEFAULT NULL,
`salary` DOUBLE not NULL,
PRIMARY KEY(`id`)
)SELECT * from monsterINSERT INTO  `monster` (`id`,`age` ,`birthday`,`email`,`gender`,`name`,`salary`) 
VALUES (1,20,'2000-10-10','nmw@sohu.com','男','牛魔王',9000.99);
INSERT INTO  `monster` (`id`,`age` ,`birthday`,`email`,`gender`,`name`,`salary`)
VALUES (2,10,'2000-12-12','bgj@sohu.com','女','白骨精',9999.99);
  1. 我们导入相关的 jar 依赖。这里我们使用 Druid 数据库连接池。

对于 Mybatis-puls 相关的 jar 包,大家可以在:✏️✏️✏️ https://mvnrepository.com/ 找到所需要的版本。

在这里插入图片描述

  • https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter

在这里插入图片描述

这里我使用的是:3.4.3 的版本。

<!--        引入 mybatis-puls starter--><!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3</version></dependency>

在这里插入图片描述

引入 Druid 数据库的 jar 依赖。

在这里插入图片描述

<!--        引入 druid 依赖--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.17</version></dependency>

完整的 pom.xml 的编写的 jar 依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.rainbowsea</groupId><artifactId>springboot_mybatispuls</artifactId><version>1.0-SNAPSHOT</version><!--    导入SpringBoot 父工程-规定写法--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.3</version></parent><!--    导入web项目场景启动器:会自动导入和web开发相关的jar包所有依赖【库/jar】--><!--    后面还会在说明spring-boot-starter-web 到底引入哪些相关依赖--><dependencies><!--        引入 web starter 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--        引入 mysql 驱动: 这里老师使用版本仲裁 8.0.26--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--        引入配置处理器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId></dependency><!--引入lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--        引入 test stater --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!--        引入 druid 依赖--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.17</version></dependency><!--        引入 mybatis-puls starter--><!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3</version></dependency></dependencies></project>
  1. 编写对应 数据表的在Java当中对应的 Bean 对象。

在这里插入图片描述

特殊说明:

这里使用 @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") 注解。来设置数据表当中的时间赋值到该 Bean 对象上的时间属性的一个时间格式。

  • pattern = "yyyy-MM-dd" 是设置时间显示的格式样式
  • timezone = "GMT+8" 是设置时区差。这里我们中国是东半球,时差为 + 8 个小时。

需要注意的是:这个注解只对前端显示,有效果,后端,控制台显示无效。

在这里插入图片描述

  1. 将Spring Boot 默认的 HikariCP 数据库连接池,切换为我们想要的 Druid 数据库连接池。

这里我们通过配置类的方式,进行切换。

在这里插入图片描述

package com.rainbowsea.springboot.mybatis.config;import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;@Configuration
public class DruidDataSourceConfig {@ConfigurationProperties(value = "spring.datasource")  // 读取 类路径下的application.yaml// 的信息,并为下面的 对应的 setXX 进行赋值操作@Beanpublic DataSource dataSource() {DruidDataSource druidDataSource = new DruidDataSource();return druidDataSource;}}

在 resource 类路径下创建一个,名为 applicaiton.yaml 文件,配置编写,相关对于,Druid 数据库连接池的信息。如下:

在这里插入图片描述

server:port: 9090spring:datasource:url: jdbc:mysql://localhost:3306/springboot_mybatispuls?useSSL=true&useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: MySQL123

在这里插入图片描述

特别说明:我们还可以在 application.yaml 文件当中,配置一下,开启 Mybatis puls 的打印显示日志信息的。

mybatis-plus:configuration:  # 进行mybatis-puls配置,配置项和mybatis是一样的 开启日志log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

在这里插入图片描述

完整的 application.yaml 的文件内容的编写。如下:

server:port: 9090spring:datasource:url: jdbc:mysql://localhost:3306/springboot_mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: MySQL123mybatis-plus:configuration:  # 进行mybatis-puls配置,配置项和mybatis是一样的 开启日志log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  1. 编写项目的场景启动器。

在这里插入图片描述

运行测试,我们是否成功切换为了,我们想要的 Duird 数据连接池,因为在 Spring Boot 当中测试的话,必须要编写好对应的项目启动器,不然,是无法测试的,会报错。同时也测试我们的 MyBatis puls 是否配置上去了。

在这里插入图片描述

在这里插入图片描述

package com.rainbowsea.springboot.mybatisplus;import com.rainbowsea.springboot.mybatispuls.Application;
import com.rainbowsea.springboot.mybatispuls.bean.Monster;
import com.rainbowsea.springboot.mybatispuls.mapper.MonsterMapper;
import com.rainbowsea.springboot.mybatispuls.service.MonsterService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Application.class)
public class ApplicationTest {@Resourceprivate JdbcTemplate jdbcTemplate;@Testpublic void getDruidSourceTest() {System.out.println(jdbcTemplate.getDataSource().getClass());}}
  1. 建一个mapper/dao 的包,在该包下创建一个名为 MonsterMapper 的接口,通过代理类的方式,在该接口下,编写我们要执行业务的 SQL 语句的方法。

在这里插入图片描述

package com.rainbowsea.springboot.mybatispuls.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.rainbowsea.springboot.mybatispuls.bean.Monster;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;/*** BaseMapper 已经默认提供了很多的crud 方法,可以直接使用* 如果BaseMapper 提供的方法不能满足业务需求,我们可以再开发新的方法,* 并在MonsterMapper.xml 进行配置 ===> 使用插件开发*/@Mapper
public interface MonsterMapper extends BaseMapper<Monster> {}

特别说明:

BaseMapper 已经默认提供了很多的crud 方法,可以直接使用。

在这里插入图片描述

在这里插入图片描述

如果BaseMapper 提供的方法不能满足业务需求,我们可以再开发新的方法,就像使用 mybatis 一样,我们可以在 。

在这里插入图片描述

如果是: BaseMapper 当中的方法,我们就不需要自行编写对应 SQL 语句的 xml 文件内容了,当然,对于自定义的方法,我们也可以通过 Mybatisx 插件为我们自动生成对应的xml的SQL语句。

这里我们在该 接口类当中,使用了 @Mapper 注解。该注解的作用就是,让Spring Boot 加载的时候,会扫描这个类。从而找到这个类。这样我们就不需要额外的配置,包扫描了

运行测试:

在这里插入图片描述

package com.rainbowsea.springboot.mybatisplus;import com.rainbowsea.springboot.mybatispuls.Application;
import com.rainbowsea.springboot.mybatispuls.bean.Monster;
import com.rainbowsea.springboot.mybatispuls.mapper.MonsterMapper;
import com.rainbowsea.springboot.mybatispuls.service.MonsterService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Application.class)
public class ApplicationTest {@Resourceprivate MonsterMapper monsterMapper;@Testpublic void testMonsterMapper() {Monster monster = monsterMapper.selectById(2);System.out.println("monster--" + monster);}}

在这里插入图片描述

  1. 编写对应的 Severl 业务处理

首先编写接口。

在这里插入图片描述

package com.rainbowsea.springboot.mybatispuls.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.rainbowsea.springboot.mybatispuls.bean.Monster;/*** 1.传统方式:在接口中定义方法/声明方法,然后在实现类中进行实现* 2. 在mybatis-plus中,我们可以继承父接口 IService* 3. 这个 IService 接口声明很多方法,比如crud* 4. 如果默认提供方法不能满足需要,我们可以再声明需要的方法,然后在实现类中进行实现即可*/// 注意:接口不要添加 @Service
public interface MonsterService extends IService<Monster> {// 自定义方法public void t1();
}

特别说明:

  1. 传统方式:在接口中定义方法/声明方法,然后在实现类中进行实现
  2. 在mybatis-plus中,我们可以继承父接口 IService
  3. 这个 IService 接口声明很多方法,比如crud。

在这里插入图片描述

在这里插入图片描述

  1. 如果默认提供方法不能满足需要,我们可以再声明需要的方法,然后在实现类中进行实现即可。

在这里插入图片描述

在编写其接口的实现类:

在这里插入图片描述

在这里插入图片描述

package com.rainbowsea.springboot.mybatispuls.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.rainbowsea.springboot.mybatispuls.bean.Monster;
import com.rainbowsea.springboot.mybatispuls.mapper.MonsterMapper;
import com.rainbowsea.springboot.mybatispuls.service.MonsterService;
import org.springframework.stereotype.Service;/*** 1. 传统方式:在实现类中直接进行implements MonsterService* 2. 在mybatis-puls 中,我们开发Service 实现类,需要继承 ServiceImpl* 3. 我们观察看到 ServiceImpl 类实现 IService 接口* 4. MonsterService 接口它继承了 IService 接口* 5. 这里MonsterServiceImpl 就可以认为是实现了 MonsterService接口,这样MonsterService* 就可以使用IService接口方法,也可以理解可以使用 MonsterService 方法* 6. 如果 MonsterService接口中,声明了其它的方法/自定义方法,那么我们依然需要在MonsterService* 类,进行实现*/@Service
public class MonsterServiceImplextends ServiceImpl<MonsterMapper, Monster>implements MonsterService {@Overridepublic void t1() {}
}

特别说明,重点内容:

  1. 传统方式:在实现类中直接进行 implements MonsterService
  2. 在mybatis-puls 中,我们开发Service 实现类,需要继承 ServiceImpl

在这里插入图片描述

在这里插入图片描述

    1. 我们观察看到 ServiceImpl 类实现 IService 接口,MonsterService 接口它继承了 IService 接口,这里MonsterServiceImpl 就可以认为是实现了 MonsterService接口,这样MonsterService就可以使用IService接口方法,也可以理解可以使用 MonsterService 方法。

    在这里插入图片描述

在这里插入图片描述

  1. 如果 MonsterService接口中,声明了其它的方法/自定义方法,那么我们依然需要在MonsterService类,进行实现 。

运行测试:

在这里插入图片描述

package com.rainbowsea.springboot.mybatisplus;import com.rainbowsea.springboot.mybatispuls.Application;
import com.rainbowsea.springboot.mybatispuls.bean.Monster;
import com.rainbowsea.springboot.mybatispuls.mapper.MonsterMapper;
import com.rainbowsea.springboot.mybatispuls.service.MonsterService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Application.class)
public class ApplicationTest {@Resourceprivate MonsterService monsterService;@Testpublic void testMonsterService() {Monster monster = monsterService.getById(2);System.out.println(monster);// 这些 List 都是 monsterService 继承 IService 当中的方法List<Monster> list = monsterService.list();for (Monster monster1 : list) {System.out.println(monster1);}}}

在这里插入图片描述

  1. 编写对应的 Controller 控制器,在前端处理显示。

在这里插入图片描述

在这里插入图片描述

package com.rainbowsea.springboot.mybatispuls.controller;import com.rainbowsea.springboot.mybatispuls.bean.Monster;
import com.rainbowsea.springboot.mybatispuls.service.MonsterService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import javax.annotation.Resource;
import java.util.List;@Controller
public class MonsterController {@Resourceprivate MonsterService monsterService;// 方法,根据id 返回对应对象@ResponseBody@GetMapping("/monster")public Monster getMonsterById(@RequestParam(value = "id") Integer id) {return monsterService.getById(id);}// 编写方法,返回所有的monster信息// 后面我们还会说分页查询@GetMapping("/list")@ResponseBodypublic List<Monster> listMonster() {return monsterService.list();}}

运行测试:注意:我们这里配置的端口是9090,并不是8080。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. Spring Boot 整合 MyBatis plus 注意事项和细节

如果这个Java当中的类名 Monster 和 数据库表中的表名不一致,不能映射上。则可以通过

@TableName指定
@TableName("monster_") // 填数据库表当中定义的表名

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

我们在该 Bean 类上添加上 @TableName 注解。

@TableName("monster_") value 值指明为:对应数据库当中的数据表,为那张数据表进行一个映射处理。

在这里插入图片描述

在这里插入图片描述


4. MyBatisx 插件的安装和使用

MybatisX 是一款专为 IntelliJ IDEA 设计的快速开发插件,旨在提升 MyBatis 与 MyBatis-Plus 框架的开发效率。

官网文档地址:https://baomidou.com/guides/mybatis-x/

安装:

  1. 打开 IntelliJ IDEA。
  2. 进入 File -> Settings -> Plugins -> Browse Repositories
  3. 在搜索框中输入 mybatisx
  4. 找到 MybatisX 插件并点击安装。
  5. 在这里插入图片描述

4.1 MyBatisx 核心功能

4.1.1 XML 映射跳转

MybatisX 提供了便捷的 XML 映射文件与 Java 接口之间的跳转功能,让开发者能够快速地在两者之间切换,提高开发效率。

XML 跳转示例

4.1.2 代码生成

通过 MybatisX,您可以轻松地根据数据库表结构生成对应的 Java 实体类、Mapper 接口及 XML 映射文件。

代码生成示例

4.1.3 重置模板

MybatisX 允许您重置代码生成模板,以恢复到默认设置或自定义模板内容。

重置模板示例

4.1.4 JPA 风格提示

MybatisX 支持 JPA 风格的代码提示,包括新增、查询、修改和删除操作的自动代码生成。

  • 生成新增操作生成新增示例
  • 生成查询操作生成查询示例
  • 生成修改操作生成修改示例
  • 生成删除操作生成删除示例

4.1.5 生成的表名与预期不符?

MybatisX 根据以下规则确定表名:

  1. 实体类上的 JPA 注解,如:@Table(name="t_user")
  2. 实体类上的 mybatis-plus 注解,如:@TableName("t_user")
  3. 实体类上的注释,如:@TableName com.xx.xx.UserModel
  4. 若以上规则均不满足,则将驼峰命名的类名转换为下划线命名,如:UserModel 对应表名 user_model

5. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈红外测温技术在变电站运维中的应用

0引言 随着市场经济的繁荣发展&#xff0c;社会对电力的需求持续增长。城市供电网络的规模和用电设备的总量也在不断扩大&#xff0c;这导致城市电力系统中潜在的网络安全隐患日益增多。作为电力系统核心组成部分的变压器&#xff0c;其安全、稳定的工作直接关系到电能的质量和…

总结拓展十:SAP开发计划(上)

第一节 功能开发说明书介绍 1、功能开发的基础分类 报表查询开发单据打印开发功能开发增强开发接口开发 2、屏幕元素介绍 ——程序屏幕是SAP系统与用户之间的桥梁&#xff0c;屏幕由各种不同元素布局组成 示例&#xff1a;选择屏幕界面 单选输入框 多选输入框 设定默认…

静态库 动态库

https://blog.csdn.net/mahoon411/article/details/113565482 库&#xff1a;可执行代码的二进制文件&#xff0c;里面有可以直接使用的函数&#xff0c;变量等&#xff1b;不能单独运行 因为 Linux 和 Win 的链接器、汇编器、编译器的不同&#xff0c;相同代码的库不同 Lin…

k8s介绍及部署

目录 一 Kubernetes 简介及部署方法 1.1 应用部署方式演变 1.2 容器编排应用 1.3 kubernetes 简介 1.4 K8S的设计架构 1.4.1 K8S各个组件用途 1.4.2 K8S 各组件之间的调用关系 1.4.3 K8S 的 常用名词感念 1.4.4 k8S的分层架构 二 K8S集群环境搭建 2.1 k8s中容器的管…

演示:基于WPF自绘的中国省份、城市、区县矢量地图

一、目的&#xff1a;演示一个基于WPF自绘的中国省份、城市、区县矢量地图 二、效果 国 省 市 三、功能 支持实际经纬度显示 支持平移&#xff0c;缩放等功能 显示中国地图 显示各个省份地图 显示各个省份地图&#xff08;包含在表格中&#xff0c;包含缩率图&#xff09; 显…

[数据集][目标检测]疟疾恶性疟原虫物种目标检测数据集VOC+YOLO格式948张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;948 标注数量(xml文件个数)&#xff1a;948 标注数量(txt文件个数)&#xff1a;948 标注类别…

MySQL系列—12.Undo log

1、概念 DML 操作导致数据变化 , 将变化前的记录写入 Undo 日志。 作用 用于记录更改前的一份 copy &#xff0c;在操作出错时&#xff0c;可以用于回滚、撤销还原&#xff0c;只将数据库 逻辑地恢复到原来的样子 你 插入一条记录时&#xff0c;至少要把这条记录的主键值记下来…

Elasticsearch基础(七):Logstash如何开启死信队列

文章目录 Logstash如何开启死信队列 一、确保 Elasticsearch 输出插件启用 DLQ 支持 二、配置 Logstash DLQ 设置 三、查看死信队列 四、排查 CSV 到 Elasticsearch 数据量不一致的问题 Logstash如何开启死信队列 在 Logstash 中&#xff0c;死信队列&#xff08;Dead Le…

典型BUCK电路学习和设计

手把手教你设计12V3Abuck降压电路-2-相关输入参数讲解_哔哩哔哩_bilibili 这里是输入电容&#xff0c;先过大电容&#xff08;电解电容&#xff09;再过小电容&#xff08;陶瓷贴片电容&#xff0c;高频率波&#xff09; 输出也可以同理 开关电源不能带负载的原因&#xff0c…

RocketMQ实战与集群架构详解

目录 一、MQ简介 MQ的作用主要有以下三个方面 二、RocketMQ产品特点 1、RocketMQ介绍 2、RocketMQ特点 三、RocketMQ实战 1、快速搭建RocketMQ服务 2、快速实现消息收发 1. 命令行快速实现消息收发 2. 搭建Maven客户端项目 3、搭建RocketMQ可视化管理服务 4、升级分…

MYSQL数据库基础篇——DDL

DDL&#xff1a;DDL是数据定义语言&#xff0c;用来定义数据库对象。 一.DDL操作数据库 1.查询 ①查询所有数据库 输入&#xff1b; 得到结果&#xff1a; ②查询当前数据库 输入&#xff1b; 例如执行下面语句&#xff1a; 2.创建 输入 然后展示数据库即可得到结果&…

linux第二课(docker的安装使用)

目录 一.关于docker (1)背景引入 (2)docker介绍 (3)功能 (4)Docker架构 二.docker的安装及相关的命令 (1)docker的安装 (2)docker的配置 (3)docker镜像命令 (4)容器命令 三.docker安装myaql ​编辑 四.数据卷挂载 1.数据卷挂载引入 2.数据卷挂载图解 3.数据卷的安装…

排序----数据结构

Comparable Integer Double 默认情况下都是按照升序排列的 string 按照字母再ASCII码表中对应的数字升序进行排列 冒泡排序 选择排序

实战16-RVP定义完成适配

新增文件 //设计搞总宽度 const DRAFT_WIDTH 360//将元素的设计搞大小转化为真机中的大小 export default function rvp(val: number) {/*计算元素真正的大小&#xff1b;* 元素在设计稿的大小 / 设计搞总宽度 x / 真机宽度 (保证元素在不同设备占比相同)x 元素在设计稿的大…

[数据集][目标检测]岩石种类检测数据集VOC+YOLO格式4766张9类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4766 标注数量(xml文件个数)&#xff1a;4766 标注数量(txt文件个数)&#xff1a;4766 标注…

Cpp类和对象(上)(3)

文章目录 前言一、面向过程与面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及类的封装类的访问限定符类的封装 五、类的作用域(类域)六、类的实例化七、类对象模型如何计算类对象的大小类对象的存储方式猜测 八、this指针this指针的引出this指针的特性 九、C语言…

实习项目|苍穹外卖|day11

Apache ECharts 前端技术。 营业额统计 还是比较简单的。 用户统计 订单统计 以上所有需求。难点在于对时间类的处理&#xff1a; // 接收格式 GetMapping("/turnoverStatistics")ApiOperation("营业额统计")public Result<TurnoverReportVO>…

二叉搜索树(Java实现)

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 目录 1.概念 2.实现二叉搜索树 定义节点 查找元素 插入元素 删除元素 1.概念 二叉搜索树又称二叉排序树,或者它是一棵空树,或者是具有…

镀金引线---

一、沉金和镀金 沉金和镀金都是常见的PCB金手指处理方式&#xff0c;它们各有优劣势&#xff0c;选择哪种方式取决于具体的应用需求和预算。 沉金&#xff08;ENIG&#xff09;是一种常用的金手指处理方式&#xff0c;它通过在金手指表面沉积一层金层来提高接触性能和耐腐蚀性…

【ARM】Trustzone和安全架构

Trustzone的基本概念&背景和历史 什么是Trustzone&#xff1f; 什么是TEE&#xff1f; Trustzone是一个技术&#xff0c;是一个技术的设计&#xff0c;一个安全架构&#xff0c;既不是软件也不是硬件。 TEE (Trusted Execution Environment) 可信执行环境。就是依托Trust…