后端学习1.1:用户表增删改查、登录功能接口编写

功能要求

1.新建一个springboot-mybatis集成项目,并连接一个新建数据库,使这个项目可以运行;
2.创建一张用户表,表中应包含唯一索引、用户名、用户密码以及用户信息字段;
要求可以写出相应的接口,实现增加、删除、修改以及查询的功能;
(使用mybatisplus)查询功能应包括根据索引查找单个用户、以及根据用户名和用户信息分页模糊查询用户的功能;
要求使用postman调取接口,并截图证明;
3.实现批量增加用户的功能,应直接使用原版mybatis,在xml中写sql语句;
4.配置redis,实现登录功能,并在输入密码错误三次后锁住账户;
密码要做sha256加密;
这个账户要求锁住20分钟,并在被锁住期间,再次登录应抛出异常;

开发工具:IDEA
技术:Springboot+mybatis+mybatisplus+mysql+redis+postman

1、新建springboot-mybatis集成项目

打开IDEA编辑器——>新建——>项目

在这里插入图片描述

选择Spring initializr——>可以修改名称为适合自己项目的名称和项目存放路径——>选择下一步

在这里插入图片描述

选择Spring Web——>点击完成

在这里插入图片描述

IDEA会根据pom.xml中的配置下载依赖,如果没有自动下载,可进行手动下载,如下图所示
在这里插入图片描述
下载完成后,可将.mvn、mvnw、mvnw.cmd删除
在这里插入图片描述
mvnw–全名是maven wrapper;它的原理是在maven-wrapper.properties文件中记录要使用的maven版本
mvn文件夹–存放maven-wrapper.properties和相关jar包
mvn.cmd–执行mvnw命令的cmd入口
如果不用git做版本控制,不控制maven版本,这些都可以删除

2、连接数据库

在pom.xml中添加数据库相关依赖,在这里使用的是mybatis+mysql
下载依赖
		<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper</artifactId>
            <version>3.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>

第一个依赖是 mysql 数据库;
第二个依赖是 tk.mybatis,mybatis 包。
第三个依赖是 org.mybatis.spring.boot,主要用来集成 mybatis 和 spring 框架。

注意:mysql 数据库版本需要指定一下,最好是一个中间版本,不要太新,也不要太老。如果没有指定,会按照最新的版本下载,最新的版本可能会导致老的配置失效,产生bug。

配置数据库相关参数
在 application.properties 文件中添加以下配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
mybatis.type-aliases-package=com.example.demo

spring.datasource.url:数据库服务器地址。
useUnicode:使用的编码格式。
spring.datasource.username:数据库登陆用户名。
spring.datasource.password:数据库登陆密码。
spring.datasource.driver-class-name:数据库连接驱动类。
mybatis.mapper-locations:mybatis 映射扫描路径。
mybatis.type-aliases-package:实体扫描路径。

3、新建数据库

在这里使用图形化管理工具Navicat进行表操作

4、编写功能接口

第一步:创建 entity 实体类。

根据业务逻辑创建所需要的对象和属性。
新建 entity 文件包
1、文件下面添加User类,用来抽象用户信息
2、文件下面添加Response类,用来返回接口信息
3、……

在这里插入图片描述

第二步:创建 service 服务类。

根据业务关系,编写相关业务逻辑。
新建 service 文件包
1、在此文件包下新建 UserService 类编写接口
2、在此文件包下新建impl文件包,在这文件包下实现UserService接口

在这里插入图片描述
在这里插入图片描述

第三步:创建 mapper 类。

根据 service 服务类创建对应的 mapper 类。
新建 mapper 文件包
在此文件包下新建 UserMapper 类

在这里插入图片描述

第四步:关联数据库,写 sql 语句。

在 resources 文件夹下,新建 mapper 文件夹,在此文件夹下新建相关的 xml 文件

在这里插入图片描述

总结:
Entity:根据业务逻辑创建所需要的对象的属性和方法
Service:根据业务关系,编写相关业务逻辑(调用DAO层接口,接收DAO层返回的数据)
DAO层(Mapper层):根据service服务类创建对应的mapper类,主要与数据库进行交互(sql语句写在对应的xml文件中)
Controller层:负责前后端交互,接收前端请求,调用service层,接收service层返回的数据,最后返回具体的数据和页面到客户端
关系:
Controller层调用service接口里定义的方法(接口里的方法要在serviceImpl里实现);
实现时,调用的是DAO层(Mapper层)里的方法,DAO层的参数源于Entity层;

5、学习到的知识点

  1. Entity、Service、Mapper、Controller之间的关系
  2. mapper文件中的映射关系、数据库操作返回值
  3. 批量增加用户的sql语句用foreach
  4. 随机生成一些数据的方法
eg.生成随机密码:
 - 密码字典——>随机获取字符
 - 密码字典——>随机打乱集合顺序——>随机获取字符
  1. sha256加密(使用Apache的Commons-codec包)
  2. redis配置,实现登录功能
  3. msql删除表中数据使的id从1开始增长
  4. 引入hutool,生成uuid
  5. 配置通用返回对象(beforeBodyWrite)、统一异常处理(ExceptionHandle)
  6. lombok插件 ;通过注解形式,在编译的时候自动为属性生成构造器,getter、setter、toString……
  7. ……
  • 1
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用 Node.js、Express.js 和 MongoDB 实现增删改查接口的示例: 1. 首先,需要安装相关依赖: ``` npm install express mongoose body-parser --save ``` 2. 创建 Express.js 应用程序,并连接 MongoDB 数据库: ```javascript const express = require('express'); const mongoose = require('mongoose'); const bodyParser = require('body-parser'); const app = express(); // 连接 MongoDB 数据库 mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true, useUnifiedTopology: true }); // 使用 body-parser 解析请求体 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); // 定义数据模型 const UserSchema = new mongoose.Schema({ username: String, password: String, age: Number }); const User = mongoose.model('User', UserSchema); // 启动服务器 app.listen(3000, () => { console.log('Server started on port 3000'); }); ``` 3. 实现增删改查接口: ```javascript // 添加用户 app.post('/users', async (req, res) => { const { username, password, age } = req.body; const user = new User({ username, password, age }); try { await user.save(); res.status(201).json({ message: 'User created successfully', user }); } catch (err) { res.status(400).json({ message: 'Failed to create user', error: err.message }); } }); // 获取所有用户 app.get('/users', async (req, res) => { try { const users = await User.find(); res.status(200).json(users); } catch (err) { res.status(400).json({ message: 'Failed to fetch users', error: err.message }); } }); // 获取单个用户 app.get('/users/:id', async (req, res) => { const { id } = req.params; try { const user = await User.findById(id); if (user) { res.status(200).json(user); } else { res.status(404).json({ message: 'User not found' }); } } catch (err) { res.status(400).json({ message: 'Failed to fetch user', error: err.message }); } }); // 更新用户 app.put('/users/:id', async (req, res) => { const { id } = req.params; const { username, password, age } = req.body; try { const user = await User.findById(id); if (user) { user.username = username; user.password = password; user.age = age; await user.save(); res.status(200).json({ message: 'User updated successfully', user }); } else { res.status(404).json({ message: 'User not found' }); } } catch (err) { res.status(400).json({ message: 'Failed to update user', error: err.message }); } }); // 删除用户 app.delete('/users/:id', async (req, res) => { const { id } = req.params; try { const user = await User.findById(id); if (user) { await user.remove(); res.status(200).json({ message: 'User deleted successfully', user }); } else { res.status(404).json({ message: 'User not found' }); } } catch (err) { res.status(400).json({ message: 'Failed to delete user', error: err.message }); } }); ``` 以上代码实现了一个简单的增删改查接口,可以通过发送 HTTP 请求来添加、获取、更新和删除用户数据。当请求成功时,将返回相应的状态码和数据;当请求失败时,将返回相应的状态码和错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值