本文已参与「新人创作礼」活动,一起开启掘金创作之路
前言
上篇文章juejin.cn/post/705754…我们已经实现了简单的增删改查操作。考虑到很多人没有mysql数据库,我先介绍一下如何使用docker搭建自己的mysql
- 搭建docker可以参考我的这篇文章juejin.cn/post/705456…
- 如果没有centos环境,可以参考这个网址上的文章自己搭建一个www.runoob.com/docker/wind…
- 提示:本篇文章的mysql搭建基于centos,如果和自己的系统不一致,请自行百度解决方案
搭建mysql
docker-compose
docker-cmpose可以通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,我们先在自己的环境中安装一下
下载docker-compose
sudo curl -L "https://github.91chifun.workers.dev//https://github.com/docker/compose/releases/download/1.27.4/docker-compose-Linux-x86_64" -o /usr/local/bin/docker-compose
对下载的文件添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
创建软连接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装完成
docker-compose -version
此时可以看到我们的控制台中正常显示对应的版本号:1.27.4
启动mysql
编写配置文件
首先我们跳转到根目录,然后创建一个自己的文件夹,在下边新建yml文件夹然后新建mysql-dc.yml,内容如下:
version: '3'
services:
mysql:
image: mysql:8.0.25 # MySQL镜像
container_name: mysql # MySQL容器名称
environment:
MYSQL_ROOT_PASSWORD: supporter # MySQL ROOT账号密码
ports:
- 3306:3306 # 端口映射
volumes:
- /lmh/mysql/data:/var/lib/mysql #挂载 MySQL数据
我们需要新建自己的/lmh/mysql/data文件用来挂载数据
这里我们定义了容器服务为mysql,镜像为mysql:8.0.25,定义环境设置里的MYSQL_ROOT_PASSWORD的值为password,
容器的3306指向自己的3306.挂载自己的数据在/lmh/mysql/data中,这里保证自己数据不丢失的关键配置。
启动服务
执行这个命令启动自己的mysql服务docker-compose -f mysql-dc.yml -up -d,然后等待一会,执行docker ps -a 就可以看见自己的数据库了
至此自己的mysql已经搭建完成了,如果有遇到启动不起来的情况,可以在本文下留言
设置逻辑删除
我们在编写基本的增删改查案例时,可以看到,我们在执行删除方法时,对应的数据直接delete掉了,这样数据十分不安全。我们需要设置数据为逻辑删除状态以保证数据安全
在application.yml配置文件中添加配置如下
mybatis-plus:
global-config:
db-config:
logic-delete-field: del_flag # 全局逻辑删除的实体字段名
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
设置数据库中的del_flag默认值为0且更新所有的字段为0
添加注解
在BaseEntity的delFlag上添加@TableLogic注解,这里官网说不用加实际测试时不加不会逻辑删除
@TableLogic
@TableField(value = "del_flag")
private Integer delFlag;
检验是否生效
重启项目,初始化一些数据,执行删除方法,然后直接查询数据库可以看到数据没有删除且del_flag的值为1
结语
今天我们主要的工作就是搭建自己的mysql数据库,然后实现逻辑删除,现在项目上存在两个问题:1:如果高并发的时候容易锁数据2:有很多字段需要自己指定初始值,很不智能。明天我们将处理一下这些问题。
本文所有代码已上传的gitee,欢迎有兴趣的掘友们startgitee.com/liangminghu…
欢迎关注我的掘金账号:juejin.cn/user/261290…
下期预告:处理数据库含锁的问题,自动填充数据及其他优化。