一、注册逻辑
二、代码写的位置
I UserService.java 写业务逻辑的
2.1 代码1
2.1.1 注释生成
先按
/**
再按
回车
2.1.2 多补充一点
2.2 代码2
Implement method 'userRegister'
# 在这里实现用户注册的逻辑,例如将用户名和密码存储到数据库中
2.2.1 自动进入userserive 实现类里面【此处是业务逻辑,写代码的地方】
2.2.2 补充完整
2.3 代码3
2.3.1 代码校验麻烦,添加插件
每个字段判断是否为空 & 是否等于 null
在SQL中,空(空字符串)不是NULL。
1)NULL表示一个字段没有值,是一种未知或不适用的状态,在SQL中,NULL不等同于0或空字符串,而是表示缺失值。
2)空(空字符串)表示一个字段的值为空,即有值但是没有内容,在SQL中,空字符串是一个有效的字符串,但不等同于NULL。
2.3.2 添加插件:
中央仓库
网址:
Maven Repository: apache common utils (mvnrepository.com)
本人
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
2.3.3 插件代码,放入 pom 里面的位置 【放再 start 后,因为,这是项目全过程都需要用到的依赖】
2.3.4 依赖安装完后,需刷新,即下载
2.4 代码 3 修改代码,重新写
【刚下载的依赖就是 lang3】
本人解释:
网址:
org.apache.commons.lang3下 StringUtils 工具类_org/apache/commons/lang3/stringutils-CSDN博客
2.5 代码 4
2.6 代码5 账户不能重复 【看网址理解】
网址:
QueryWrapper的详细使用方法_querywrapper 分页-CSDN博客
2.7 代码6 账户不能包含特殊字符 【第二节课,鱼皮接近尾声,发现错误】
copy 网址: 正则表达式
Java过滤特殊字符的正则表达式 - 精神领袖 - 博客园 (cnblogs.com)
String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
本人理解
// 账户不能包含特殊字符
// m.find();//返回true
String validPattern = "[`~!@#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
Matcher matcher = Pattern.compile(validPattern).matcher(userAccount);
if (matcher.find())
{
return -1;
}
解释:
Matcher matcher = Pattern.compile(validPattern).matcher(userAccount);
这段代码是使用Java的正则表达式库(Pattern和Matcher类)来匹配用户账户(userAccount)是否符合给定的正则表达式模式(validPattern)。
1、首先,通过调用Pattern类的compile方法,将validPattern编译成一个Pattern对象。
2、然后,使用Pattern对象的matcher方法,传入userAccount字符串,生成一个Matcher对象。
3、Matcher对象可以用来对userAccount进行各种正则表达式操作,例如查找、替换等。
解释:
if (matcher.find())
//if m.find();//返回true
// 说明有特殊字符,结果失败了,需重新输入
2.8 代码7 密码和校验密码相同
三、代码优化
3.1 解决性能浪费,【查询数据库 ,代码5 ,账户不能重复】
移至最后
四、对密码进行加密(密码千万不要直接以明文存储到数据库中)
4.1 加密算法,类库
4.1.1 先写测试
网址:
java 密码加密_Java如何实现密码加密-CSDN博客
//2对密码进行盐值加密(加密算法MD5-特点:不可逆,相同内容加密结果也相同)
//2.1加密方式1(借助spring框架工具类DigestUtils)
//String newPassword=DigestUtils.md5DigestAsHex((salt+entity.getPassword()).getBytes());
加密成 16进制 【代码需更改为如下】
此处只做测试,看下这个代码的功能是我们想要的不,成功了,再放到下图去写
4.2 效果
五、向数据库插入用户数据
5.1 插入代码
六、补注入 :mapper
6.1 补
6.2 因为注入mapper,而改写代码
七、【不要使用这里的测试数据,部分有误】开始测试代码
7.1 开始测试代码
7.1.1 位置解释,为上一处
7.2 测试代码造数据
7.2.1 报错,debug
7.2.2 打断点调试
前面单击一下?