技术栈
-
后端:Springboot2 + Mybatis-Plus + JWT + Sa-Token + Redis
-
前端:Vue3 + Element-Plus + Vite + Pinia (node 要大于16)
-
数据库:Mysql5.7+ (我用的mysql 8.0.17)
开发工具
Idea( 2022.2.3) + WebStorm( 2022.2.3) + Navicat(16.0.10) + nodejs(18.14.0) + JDK1.8
环境环境搭建
安装mysql
数据库是MySQL8.0,因为数据表中的字段使用了JSON格式,低版本的MySQL不支持JSON。
查看当前版本 mysql -uroot -proot
更新 mysql 先导出数据,卸载老版本再安装新版本
一、删除旧版本
1.保存数据
d:D:\Program Files\MySQL\MySQL Server 5.5\bin
mysqldump -u root -p --all-databases > D:\Program Files\MySQL\data\Backup.sql
— 没反应 待解决1
解决:使用SQLyog等client软件
2.停止服务
net stop mysql — 没反应 待解决2
此电脑 管理 服务 停止服务
3.然后删除MySQL的服务输入
以管理员身份运行 sc delete mysql
4.卸载控制面板中的MySQL Server 5.5
5.删除C盘文件,C:\Program Files或者C:\Program Files (x86)里的MYSQL文件 —无
6.
7.删除C盘下的C:\ProgramData\MySQL ProgramData是隐藏文件
8.
WIN7中的documents and settings目录,就是系统盘中的users目录
C:\Users\Administrator.DESKTOP-B173SQA\AppData 隐藏文件
9.停止服务中的Mysql与删除全部安装路径
进入cmd进入旧版本的Bin,输入 mysqld -remove — 无
10.删除目录
配置IDEA
1安装IDEA2020 官网下载需要的版本 https://www.jetbrains.com/idea/download/other.html
2卸载旧的版本 D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.4\bin\Uninstall.exe
3直接安装新版本IDEA
1安装JDK14 官网下载需要的版本 https://www.oracle.com/java/technologies/downloads/
2安装完成后查看JDK 安装完成后打开cmd分别输入: java java -version
3Idea项目更换jdk的版本 file ProjectStructer
1安装好maven 建立repository文件夹 修改配置文件(库地址和阿里云仓库)
2IDEA更换Maven版本 file-settings-Build, Execution,Deployment - Build Tools -Maven
3修改环境变量
注意
数据库配置
url: jdbc:mysql://localhost:3306/partner?serverTimezone=GMT%2b8
mybatis-plus扫描开启
@MapperScan("com.partner.boot.mapper")
npm配置:
npm config set registry https://registry.npm.taobao.org
搜索pom依赖: https://mvnrepository.com/
mybatis-plus 规定的一些文件夹
问题集
问题:
解决:
登陆注册
邮箱配置
邮箱验证用途:1.注册 (数据库表里唯一) 2.登录验证 3. 修改密码(登陆后才能修改)4. 忘记密码
邮箱校验正则:/^\w+((.\w+)|(-\w+))@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+).[A-Za-z0-9]+$/
常用的正则表达式:https://github.com/cdoco/common-regex
Mybatis-Plus自动填充配置
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 配置新增策略
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐)
}
}
// 需要配合注解使用:
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
问题集
问题一:有时候会发现表单输入不进去
解决:这是因为没有绑定任何属性导致的,可以使用v-model绑定属性
问题二:第一个使用系统的用户来说,数据库初始化以及连接花了很多时间,几乎到了1s左右
解决:配置没起作用。再优化,打日志,第二次时间短与第一次时间长的区别。具体优化见下:
登录案例优化
1为什么要优化 2什么样的优化方案会比较好 3针对一个具体的案例怎么优化
重启后第一次访问,打日志发现,数据库初始化以,连接 和Web请求花费了很多时间,几乎到了1s左右。
@Component
@Slf4j
public class InitRunner implements ApplicationRunner {
@Autowired
IUserService userService;
/**
* 在项目启动成功之后会运行这个方法
* @param args
* @throws Exception
*/
@Override
public void run(ApplicationArguments args) throws Exception {
// 帮我在项目启动的时候查询一次数据库,防止数据库的懒加载
User user = userService.getById(1);
log.info("启动项目数据库连接查询成功");
}
}
// 发送一次异步的web请求,来初始化 tomcat连接
ThreadUtil.execAsync(() -> {
HttpUtil.get("http://localhost:9090/");
log.info("启动项目tomcat连接查询成功");
});