实战练习篇01 注册接口


实战练习篇01 注册接口

原创 已于 2025-08-07 15:42:19 修改 · 粉丝可见 · 86 阅读 · 0 · 0 GEO检测 · 编辑
文章链接:https://blog.csdn.net/hacker_51/article/details/140277294

学习了些皮毛,尝试练习,大佬见笑啦。

准备工作,添加 application.properties的设置:

1
2
3
4
5
6
7
8
9
10
11
12
// 数据库设置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url= jdbc:mysql://localhost:3306/mynote
spring.datasource.username= root
spring.datasource.password= 123456

// 自动化驼峰命名映射
mybatis.configuration.map-underscore-to-camel-case=true

// 控制台输出 mybatis 日志
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

1、用户数据

1
2
3
4
5
6
7
8
9
10
CREATE DATABASE mynote;
USE mynote;
CREATE TABLE USER(
user_name VARCHAR(255) NOT NULL,
user_email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
last_login_time DATETIME
);

2、创建实体类

UserEntity:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.angindem.Entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserEntity {
private String userName;
private String userEmaile;
private String password;
private LocalDateTime createTime;
private LocalDateTime updateTime;
private LocalDateTime lasterLoginTime;
}

ResultEntity:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.angindem.Entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResultEntity {
private Integer code;
private String msg;
private Object data;

public ResultEntity(Integer code, String msg) {
this.code = code;
this.msg = msg;
}

public static ResultEntity succeed() {
return new ResultEntity(200, "操作成功!!!");
}

public static ResultEntity succeed(String msg) {
return new ResultEntity(200, msg);
}

public static ResultEntity succeed(String msg, Object data) {
return new ResultEntity(200, msg, data);
}

public static ResultEntity error() {
return new ResultEntity(500, "操作失败!!!");
}

public static ResultEntity error(String msg) {
return new ResultEntity(500, msg);
}
}

3、创建 Controller、Service、Mapper

UserController:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.angindem.Controller;

import com.angindem.Entity.ResultEntity;
import com.angindem.Entity.UserEntity;
import com.angindem.Service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;

@Slf4j
@RestController
@RequestMapping("/mynote")
public class UserController {

@Autowired
private UserService userService;

@PostMapping("/register")
public ResultEntity register(@RequestBody UserEntity user)
{
user.setCreateTime(LocalDateTime.now());
user.setUpdateTime(LocalDateTime.now());
log.info("注册服务:{}",user);
userService.register(user);
return ResultEntity.succeed();
}
}

UserService:

1
2
3
4
5
6
7
package com.angindem.Service;

import com.angindem.Entity.UserEntity;

public interface UserService {
void register(UserEntity user);
}

UserServiceImpl:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.angindem.Service.Impl;

import com.angindem.Entity.UserEntity;
import com.angindem.Mapper.UserMapper;
import com.angindem.Service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

@Autowired
private UserMapper userMapper;

@Override
public void register(UserEntity user) {
userMapper.insert(user);
}
}

UserMapper:

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.angindem.Mapper;

import com.angindem.Entity.UserEntity;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper {

@Insert("insert into user(user_name, user_email, password, create_time, update_time) " +
"values(#{userName},#{userEmaile},#{password},#{createTime},#{updateTime}) ")
void insert(UserEntity user);
}

4、APIfox测试是否添加成功:

成功插入数据!!!

5、引入发送与接收邮箱功能

进入QQ邮箱开启邮箱服务获取授权码:

PS:这里我已经开启过了,未开启的根据官方提示开启即可,开启后进入管理服务

引入邮箱依赖:

1
2
3
4
5
<!--邮箱依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

添加 application.properties 的设置:

1
2
3
4
5
6
7
8
9
10
# 配置邮箱用户名
spring.mail.username=你的QQ邮箱号码
# 配置申请到的授权码
spring.mail.password=刚才短信申请到的授权码
# 配置 smtp 服务器地址
spring.mail.host=smtp.qq.com
# 启用 SSL 连接
spring.mail.properties.mail.smtp.ssl.enable=true
# 配置邮件编码
spring.mail.default-encoding=UTF-8

测试发送Tesst类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.angindem;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;

import java.util.Date;

@SpringBootTest
class MyProjectApplicationTests {

@Autowired
private JavaMailSenderImpl javaMailSender;
@Test
public void TestSendQQemail()
{
//一个简单的邮件发送
SimpleMailMessage mailMessage = new SimpleMailMessage(); //创建一个邮件信息
mailMessage.setSentDate(new Date());
mailMessage.setSubject("TestSend"); //邮件的主题
mailMessage.setText("新学习的Spring Boot邮件发送的知识"); //邮件的内容
mailMessage.setTo("**********@qq.com"); //发送者的邮箱
mailMessage.setFrom("**********@qq.com"); //接收者的邮箱
//我这里发送者和接收者都填写的是自己的邮箱
javaMailSender.send(mailMessage); //发送邮件
}


}

测试效果图:

发送成功!!!

6、编写验证码接口


觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭

微信二维码

wechat pay

支付宝二维码

ali pay

实战练习篇01 注册接口
http://blog.angindem.cn/2025/08/07/Angindem-CSDN博客/159_159/
作者
Angindem
发布于
2025年8月7日
许可协议