用户管理中心——数据库设计用户注册逻辑设计

server/2024/11/14 3:05:38/

用户管理中心——数据库设计&用户注册逻辑设计

  • 规整项目目录
  • 1. 数据库自动生成器的使用
    • 实现基本的数据库操作(操作user表)
  • 2. 注册逻辑的设计
    • (1) 写注册逻辑
    • (2) 实现
    • (3) 测试代码
  • 3. 遇到的问题

规整项目目录

在这里插入图片描述
utils–存放工具类,比如加密转换等

1. 数据库自动生成器的使用

在这里插入图片描述

实现基本的数据库操作(操作user表)

模型 user 对象 =>数据库关联,自动生成

【操作user表中的数据,从中查询数据,(在model中)先创建一个user对象,和数据库字段关联】

使用mybatis-plus自动生成
使用插件MyBatisX ,自动根据数据库生成:
在这里插入图片描述

在这里插入图片描述

代码迁移,创建测试类

在这里插入图片描述
在这里插入图片描述
安装一个插件
在这里插入图片描述

在创建的对象上按Alt + Enter,可以生成调用这个对象所有的set方法。

在这里插入图片描述
ctrl+P :可以查看这个方法要用哪些参数

最后的测试类:
在这里插入图片描述

2. 注册逻辑的设计

(1) 写注册逻辑

在这里插入图片描述

(2) 实现

java"> @Overridepublic long userRegister(String userAccount, String userPassword, String checkPassword) {// 1. 校验// if(userAccount == null || userPassword == null || checkPassword == null)if(StringUtils.isAnyBlank(userAccount, userPassword, checkPassword)){return -1;}if(userAccount.length() < 4){return -1;}if(userPassword.length() < 8 || checkPassword.length() < 8){return -1;}// 账户不能包含特殊字符String validPattern = "\\pP|\\pS|\\s+";Matcher matcher = Pattern.compile(validPattern).matcher(userAccount);if(matcher.find()){return -1;}// 密码与校验密码相同if(!userPassword.equals(checkPassword)){return -1;}// 账户不能重复——从数据库中查询QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("userAccount", userAccount);long count = userMapper.selectCount(queryWrapper);if(count > 0){return -1;}// 2. 加密final String SALT = "yupi";String newPassword = DigestUtils.md5DigestAsHex((SALT + "mypassword").getBytes());// 3. 插入数据User user = new User();user.setUserAccount(userAccount);user.setUserPassword(userPassword);boolean saveResult = this.save(user);if(!saveResult){return -1;}return user.getId();}

(3) 测试代码

java">@Testvoid userRegister() {// 非空String userAccount = "hhhhh";String userPassword = "";String checkPassword = "12345678";long result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertEquals(-1, result);// 账号长度不小于4位userAccount = "yu";result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertEquals(-1, result);// 密码不小于8位userAccount = "hhhhh";userPassword = "123456";result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertEquals(-1, result);// 账户不能重复userAccount = "yupi";userPassword = "12345678";result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertEquals(-1, result);// 账户不包含特殊字符userAccount = "yu pi";userPassword = "12345678";result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertEquals(-1, result);// 密码和校验密码不同userAccount = "hhhhh";userPassword = "12345678";checkPassword = "123456789";result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertEquals(-1, result);checkPassword = "12345678";result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertTrue(result > 0);}

3. 遇到的问题

  1. 问题:Cause: java.sql.SQLSyntaxErrorException: Unknown column ‘user_account’ in ‘field list’
    ; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown column ‘user_account’ in ‘field list’

在这里插入图片描述

原因:查找mybatis-plus官网配置文件,发现自动将下划线映射为驼峰

在这里插入图片描述
解决: 修改配置文件
在这里插入图片描述

  1. 如何解决idea插件安装过慢?
    两步带你解决IDEA 插件下载安装慢、超时、不成功问题
    在这里插入图片描述

http://www.ppmy.cn/server/38165.html

相关文章

uniapp引入vant组件库

在 UniApp 中引入 Vant 组件库的完整步骤通常如下&#xff1a; 安装 Vant&#xff1a; 首先&#xff0c;你需要通过 npm 或 yarn 安装 Vant。打开项目的根目录&#xff0c;然后在命令行中执行以下命令&#xff1a; 使用 npm&#xff1a; npm install vant 或者使用 yarn&…

雪深监测站解析-云境天合

TH-XS2雪深监测站是一种用于监测雪深的设备&#xff0c;它们分布在全国各地的关键区域&#xff0c;如高速公路、铁路沿线、机场等重要交通节点&#xff0c;以及山区、林区等易发生雪灾的地区。这些监测站就像是气象工作者的“眼睛”&#xff0c;时刻关注着雪情的变化&#xff0…

Android selinux权限

一.SE 概述 SELinux 是由美国NSA&#xff08;国安局&#xff09;和 SCC 开发的 Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的&#xff0c;2000年以 GNU GPL 发布。从 fedora core 2开始&#xff0c; 2.6内核的版本都支持SELinux。 在 SELinux 出现之前&#…

SpringMVC 中的常用注解和用法

Component&#xff1a;通用的组件注解&#xff0c;标识一个类为 Spring 组件&#xff0c;会被自动扫描并创建 Bean。(工具类&#xff09;Repository&#xff1a;表示持久层的注解&#xff0c;用于标识数据访问组件。&#xff08;和数据交互&#xff09;Service&#xff1a;表示…

PyQt 入门

Qt hello - 专注于Qt的技术分享平台 Python体系下GUI框架也多了去了&#xff0c;PyQt算是比较受欢迎的一个。如果对Qt框架熟悉&#xff0c;那掌握这套框架是很简单的。 一&#xff0c;安装 1.PyQt5 pip3 install PyQt5 2.Designer UI工具 pip3 install PyQt5-tools 3.UI…

电脑内存不足怎么清理?教你3招轻松解决

电脑内存不足是影响电脑性能的常见问题之一&#xff0c;它会导致电脑运行缓慢、应用程序响应迟钝等情况。为了解决这个问题&#xff0c;需要对电脑内存进行清理和优化。本文将介绍电脑内存不足怎么清理的三种方法&#xff0c;帮助您提高电脑性能。 方法1&#xff1a;清理临时文…

CMakeLists.txt语法规则:foreach循环的关键字

一. 简介 前一篇文章学习了 CMakeLists.txt语法中 foreach循环的基本用法。文章如下&#xff1a; CMakeLists.txt语法规则&#xff1a;foreach 循环基本用法-CSDN博客 本文继续 CMakeLists.txt语法中 foreach循环语句&#xff0c;主要学习 foreach循环中的关键字。 二. CM…

FFmpeg学习记录(三)—— ffmpeg编解码实战

解码步骤 查找解码器 (avcodec_find_decoder)打开解码器 (avcodec_open2)解码 (avcodec_decode_video2) 1.视频编码 编码的详细步骤&#xff1a; 1.输入参数2.查找编码器3.创建编码器上下文4.设置编码器参数5.编码器与编码器上下文绑定到一起6.创建输出文件7.创建AVFrame8.…