up:: 配置邮箱授权码
说明: 本小节呢,我们将会去开发发送邮件的服务。
类的字段添加过程
找到generatorConfig.xml文件
给我们的这个 user 类加一个字段,看到我们现在 user 类在这里面的是没有email字段的,因为我们之前的没有用到email,但是现在我们需要eamil,所以呢,需要给它增加这个字段,首先呢,就来到我们这个mybatis的一个配置类

说明: 关于generatorConfig.xml文件请查看博客项目初始化创建SpringBoot项目(必看)
前面没太弄明白generatorConfig.xml文件的用途,此处加深了理解 此文件是mybatis-generator用来生成对应的mapper文件和xml文件。
前往数据库imooc_mall_user添加Email字段

记得保存!!!!
加上字段后就可以重新运行形成新的pojo类
注意: 那这个时候我跟小伙伴介绍一下,当你有某个字段有更改的时候,你要去注意一些事情,首先来到这个UserMapper, 前面的这是自动生成的,但是后面这两个呢是自己写的,那这个时候如果你不去提前把这个代码给复制出来话,你会发现了,过一会儿,也就是我们重新去生成,你会发现相关的这个方法会被覆盖掉,为了避免这个情况,我们需要提前复制出去,相当于是找地方把它给保存起来。
因为我们前面的generatorConfig.xml文件里只留下User表,其余都注释掉啦,所以不会在其他mapper和xml文件重新生成,我们只需要管我们的user表即可。

与此同时,对应的userMapper.xml里的对应文件也要提前复制出去

重要: 我们复制出去好后需要把这个文件删除!删除!删除!,因为不删除执行mybatis-generator插件会以追加方式在文件后面生成,造成语句重复,从而报错,所以最好删除文件,再继续生成。

然后执行mybatis-generator插件
重新生成,查看User.java文件

然后将复制出来的mapper和xml复制回去
字段增加和删除也是比较常见的开发中会遇到的一个开发工作,我们以后就可以采用类似方式去做好下。

正式开发注册邮箱
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.3.4.RELEASE</version>
</dependency>测试发送邮件
1.打开userController层,添加接口发送email
/**
* 发送邮件
*/
@PostMapping("/user/sendEmail")
@ResponseBody
public ApiRestResponse sendEmail(@RequestParam("emailAddress") String emailAddress)
throws ImoocMallException {
//检查邮件地址是否有效,检查是否已注册
boolean validEmailAddress = EmailUtil.isValidEmailAddress(emailAddress);
if (validEmailAddress) {
} else {
return ApiRestResponse.error(ImoocMallExceptionEnum.WRONG_EMAIL);
}
}说明:

2.新建EmailUtil工具类对email进行校验
package com.imooc.mall.utils;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
/**
* 描述: Email工具
*/
public class EmailUtil {
public static boolean isValidEmailAddress(String email) {
boolean result = true;
try {
InternetAddress internetAddress = new InternetAddress(email);
internetAddress.validate();
} catch (AddressException e) {
e.printStackTrace();
result = false;
}
return result;
}
}说明:

我们看看内部的校验方法,没必要去写,一方面是重复造轮子,一方面是写不了这们全面,最多就是检查格式或者空格

3.抛出错误
