基于Springboot2+Vue3的Partner交友项目(一)

技术栈

  • 后端: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.【图片1】

7.删除C盘下的C:\ProgramData\MySQL ProgramData是隐藏文件

8.【图片2】

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 规定的一些文件夹
【图片3】

【图片4】

问题集

问题:
【图片5】

解决:
【图片6】

登陆注册

邮箱配置

邮箱验证用途: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左右

【图片7】

解决:配置没起作用。再优化,打日志,第二次时间短与第一次时间长的区别。具体优化见下:

登录案例优化

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连接查询成功");
});
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值