Day02

枚举处理器

MybatisPlus提供了一个处理枚举的类型转换器,可以帮我们把枚举类型与数据库类型自动转换

首先定义枚举类

@Getter

public enum UserStatus {

    NORMAL(1,"正常"),

    FROZEN(2,"冻结")

    ;

    @EnumValue

    @JsonValue//选择返回给前端的值

    private final int value;

    private final String desc;

    UserStatus(int value,String desc){

        this.value=value;

        this.desc=desc;

    }

}

再将相关字段改为枚举类型:

private Integer status;->private UserStatus status;

其中@JsonValue注解表示返回给前端的值是value数字,还是desc自定义字符串,如果没有这个注解默认返回的是英文字符串,比如NORMAL

使用:

if(user==null||user.getStatus()==UserStatus.FROZEN)

分页插件

首先,要在配置类中注册MyBatisPlus的核心插件,同时添加分页插件:

@Bean

public MybatisPlusInterceptor mybatisPlusInterceptor(){

    //1、初始化核心插件

    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

    //2、添加分页插件

    PaginationInnerInterceptor pageInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);

    pageInterceptor.setMaxLimit(1000L);//设置分页上限

    interceptor.addInnerInterceptor(pageInterceptor);

    return interceptor;

}

配置完成后可以直接使用插件:

void testPageQuery(){

    int pageNo=1,pageSize=2;

    //1、准备分页条件

    //1.1分页条件

    Page<User> page = Page.of(pageNo, pageSize);

    //1.2排序条件

    page.addOrder(new OrderItem("balance",true));

    page.addOrder(new OrderItem("id",true));



    //2.分页查询

    Page<User> p = userService.page(page);

    //3.解析

    System.out.println(p.getTotal());

    System.out.println(p.getPages());

    List<User> records = p.getRecords();

    records.forEach(System.out::println);

}

Docker

快速构建、运行、管理应用的工具

镜像与容器

当我们利用Docker安装应用是,Docker会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包含应用运行时所需要的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离环境,称为容器(container),不同的应用相互运行不干扰,可以运行n多应用甚至mysql集群等

镜像仓库:存储和管理镜像的平台,Docker官方维护了一个公共仓库:DockerHub

命令解读:

1、Docker run:创建并运行一个容器,-d是让容器在后台运行而不是命令行,一般都会加上

2、--name mysql:给容器起名字,必须唯一

3、-p 3306:3306:设置端口映射

4、-e KEY=VALUE:是设置环境变量

5、mysql:指定运行的镜像名字,但是这个命名并不是完整、规范

镜像命名规范:

镜像名称一般分为两部分组成:[repository]:[tag]

其中repository就是镜像名

tag是镜像的版本

在没有指定tag时,默认是latest,代表最新版本的镜像

Docker基础

常见命令

Docker最常见的命令就是操作镜像、容器的命令

Docker数据卷

数据卷(valume)是一个虚拟目录,是容器内目录与宿主机目录之间的桥梁

这样操作容器内(宿主机内)文件同时会自动修改宿主机对应文件(容器内对应文件)

在创建容器时,利用-v 数据卷名:容器内目录完成挂载

容器创建时,如果发现挂载的数据卷不存在时,会自动创建

常见命令:

Docker volume ls:查看数据卷

Docker volume rm:删除数据卷

Docker volume inspect:查看数据卷详情

Docker volume prune:删除未使用的数据卷

实现本地挂载

在执行docker run命令时,使用-v 本地目录:容器内目录可以完成本地目录挂载

本地目录必须以“/”或者“./”开头,如果直接以名称开头,会被识别为数据卷而不是本地目录,eg:

-v mysql:/var/lib/mysql会被识别成一个数据卷交mysql

-v ./mysql:/var/lib/mysql会被识别成当前目录下的mysql目录

自定义镜像

镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程,构建一个Java镜像的步骤:

准备一个Linux运行环境、安装JRE并配置环境变量、拷贝jar包、编写运行脚本

镜像结构

1、入口(Entrypoint):镜像运行入口、一般是程序启动的脚本和参数

2、层(Layer):添加安装包、依赖、配置等,每一次操作都形成新的一层

3、基础镜像(BaseImage):应用依赖的系统函数库、环境、配置、文件等

Dockerfile

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像,将来Docker可以根据Dockerfile帮我们构建镜像。常见指令:

我们可以基于Ubuntu基础镜像,利用Dockerfile描述精细结构,也可以直接基于JDK为基础镜像,省略前面的步骤:

//基础镜像

FROM openjdk:11.0-jre-buster

//拷贝jar包

COPY docker-demo.jar /app.jar

  //入口

ENTRYPOINT ["java","-jar","/app.jar"]

当编写好了Dockerfile,可以利用下面的命令来构建镜像:

Docker build -t myImage:1.0

-t:是给镜像起名,格式依然是repository:tag的格式,不指定tag时默认是latest

.:是指定Dockerfile所在目录,如果纠正当前目录,则指定为“."

网络

默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上,可以通过自定义网络来解决虚拟ip不定的情况,加入自定义网络的容器才可以通过容器名称互相访问,Docker的网络操作命令如下:

加入同一个自定义网络容器的组件可以相互访问,且可以用容器名代替对应的ip地址进行访问

DockerCompose

Dockers Compose通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署,一般一个Docker Compose文件对应一个项目,其中有项目所需要的所有的服务

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐