【JavaEE进阶】图书管理系统 - 贰
目录
🌲前言
🎄设计数据库
🍃引⼊MyBatis和MySQL驱动依赖
🌳Model创建
🎍约定前后端交互接口
🍀服务器代码
🚩控制层
🚩业务层
🚩数据层
🌴前端代码
🎄测试页面
🌲前言
前面我们基本实现了前后端交互与相应简单的逻辑,后面经过一系列的学习,我们需要对我们的代码进行优化。
我们先对我们的登录界面进行优化。
🎄设计数据库
数据库表是应⽤程序开发中的⼀个重要环节,数据库表的设计往往会决定我们的应⽤需求是否能顺利实现,甚⾄决定我们的实现⽅式.如何设计表以及这些表有哪些字段,这些表存在哪些关系也是⾮常重要的
对于数据库表的设计,我认为有两种表,一个是实体表(从需求中查看),一个是关系表(实体直接的关系,一对一,一对多,多对一)
那么当前的图书管理系统的实体表有几个张呢,分为用户表和图书表
我们的⽤⼾表有⽤⼾名和密码即可
创建如下:

🍃引⼊MyBatis和MySQL驱动依赖
pom.xml依赖:
配置数据库与日志,yml文件如下:
🌳Model创建
创建一个model类的文件夹,创建一个UserInfo类如下:
🎍约定前后端交互接口
[请求]
/user/login
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
[参数]
name=zhangsan&password=123456
[响应]
响应失败:用户名或者密码错误;响应成功:返回空
浏览器给服务器发送 /user/login 这样的HTTP请求,服务器给浏览器返回了⼀个Boolean类型的数据,返回true,表⽰账号密码验证正确
🍀服务器代码
查看之前的登录接口代码:
之前由于没有学习数据库的操作,通过硬编码,采用mock的方式来验证账号密码;此时我们就通过从数据库获取用户名和密码来进行验证
该代码我们使用应用分层的思想进行分层书写
🚩控制层
该层我们首先需要对传入数据进行判断合法
合法后,更具名称查询用户,如果可以查到,并且密码一致,就认为登录成功,并存入session
查询相关逻辑实现我们交给业务层实现
创建UserController书写代码如下
🚩业务层
该层代码简单。
具体查询我们交给数据层查询,我们只需要进行接收返回即可
UserService代码如下:
🚩数据层
创建UserMapper,使用注解方式进行查询,代码如下:
🌴前端代码


🎄测试页面
错误登录:
输入正确用户名与密码正确跳转:
相关文章:
【JavaEE进阶】图书管理系统 - 贰
目录 🌲前言 🎄设计数据库 🍃引⼊MyBatis和MySQL驱动依赖 🌳Model创建 🎍约定前后端交互接口 🍀服务器代码 🚩控制层 🚩业务层 🚩数据层 🌴前端代码…...
Vue学习教程-14内置指令
文章目录 前言一、v-text指令二、v-html指令三、v-cloak指令四、v-once指令五、v-pre指令六、其他指令 前言 Vue.js 提供了许多内置指令(Directives),这些指令用于在模板中添加特殊功能。内置指令以 v- 前缀开始。 v-text : 更新元素的 tex…...
【蓝桥杯单片机】客观题
一、第十三届省赛(一) 二、第十三届省赛(二)...
C++ 设计模式-访问者模式
C++访问者模式 一、模式痛点:当if-else成为维护噩梦 开发动物园管理系统,最初的需求很简单: class Animal {}; class Cat : public Animal {}; class Dog : public Animal {};// 处理动物叫声 void makeSound(Animal* a) {if (auto c = dynamic_cast<Cat*>(a)) {st…...
靶场之路-Kioptix Level-1 mod_ssl 缓冲区溢出漏洞
声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章笔记的只是方便各位师傅学习知识,以下网站涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 一、准备工作 首先使用 vmware 导入靶机文件, 然后网络模式改成 nat 模式即可 我们打…...
【Viewer.js】vue3封装图片查看器
效果图 需求 点击图片放大可关闭放大的 图片 下载 cnpm in viewerjs状态管理方法 stores/imgSeeStore.js import { defineStore } from pinia export const imgSeeStore defineStore(imgSeeStore, {state: () > ({showImgSee: false,ImgUrl: ,}),getters: {},actions: {…...
stm32mp采用spi接口扩展can
在 STM32MP 系列微处理器中,通过 SPI 转 CAN 功能扩展 CAN 接口需要结合硬件设计(如使用 SPI 接口的 CAN 控制器芯片)和 Linux 驱动配置。以下是详细的实现步骤和关键点: 硬件选型与连接 常用 SPI 转 CAN 芯片MCP2515:经典 SPI 转 CAN 控制器,支持 CAN 2.0B。MCP2517FD:…...
forge-1.21.x模组开发(二)给物品添加功能
功能效果 创建一个兑换券,当使用兑换券对着兑换机右键时,获得一条烤鱼 创建兑换券 创建ExchangeCouponsItem.java,继承Item,定义兑换券内容 public class ExchangeCouponsItem extends Item {public ExchangeCouponsItem(Prop…...
创建第一个 Maven 项目(一)
一、引言 在 Java 开发的广袤天地中,Maven 宛如一位全能的管家,发挥着举足轻重的作用。它是一个基于项目对象模型(POM)的项目管理和构建自动化工具,极大地简化了 Java 项目的开发流程。 Maven 的核心优势之一在于其强…...
网络运维学习笔记 022 HCIA-Datacom新增知识点03园区网典型组网架构及案例实战
园区网典型组网架构及案例实战 园区网:内部运行了园区网协议的一个主体网络 园区网络典型架构 园区网络常用协议与技术: 接入层: VLAN、生成树、链路聚合、AAA、dhcp-snooping等 汇聚层:DHCP、堆叠、链路聚合、生成树、OSPF、静…...
python-leetcode-二叉树的直径
543. 二叉树的直径 - 力扣(LeetCode) # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solutio…...
ubuntu中打包与压缩命令详解
Ubuntu 中打包与压缩命令详解 在 Ubuntu 系统中,打包和压缩文件是常见的操作。通过打包和压缩,可以将多个文件或目录合并为一个文件,并减小文件大小以节省存储空间或方便传输。本文将详细介绍 Ubuntu 中常用的打包与压缩命令及其用法。 目录…...
Linux MySQL 8.0.29 忽略表名大小写配置
Linux MySQL 8.0.29 忽略表名大小写配置 问题背景解决方案遇到的问题: 问题背景 突然发现有个大写的表报不存在。 在Windows上,MySQL是默认支持忽略大小写的。 这个时候你要查询一下是不是没有配置: SHOW VARIABLES LIKE lower_case_table…...
【c++】【线程池】线程池模式
【c】【线程池】线程池模式 1 L/F领导者与跟随者模式 概述:在此模式中,线程池中的线程分为:领导者(Leader),跟随者(Follower)和工作者(Processor) 领导者线…...
Next.js 学习-1
Next.js学习 引用:https://www.nextjs.cn/learn/basics/create-nextjs-app 先试试水吧,正好dify用的这个构建的前端项目。 使用 如果您尚未安装 Node.js,请 从此处安装。要求 Node.js 10.13 或更高版本。 好吧得用新的了,记得…...
bat命令在b站下载单个音视频
文章目录 单个音频第一行代码第二行代码下载后效果图 单个视频第一行代码第二行代码第三行代码第四行代码第五行代码下载后效果图 单个音视频第一行代码第二行代码第三行代码第四行代码第五行代码第六行代码下载后的效果图 单个音频 chcp 65001 you-get -o D:\Files\pydownloa…...
函数中的形参和实参(吐槽)
def greet_user(user_name):print(f"Hello,{user_name.title()}!")greet_user("zhangsan") 在以上函数中,user_name是形参, 在greet_user("zhangsan")中,值“zhangsan”是实参。这本身没什么大问题。 但是这…...
运维Ansible面试题及参考答案
目录 简述 Ansible 的工作原理,它是如何实现对远程主机管理的? Ansible 是基于什么语言开发的?这门语言的特性对 Ansible 的功能实现有哪些帮助? 解释 Agentless 在 Ansible 中的含义,与基于 Agent 的自动化工具相比,优势体现在哪? Ansible 中的 Inventory 文件是什…...
3、优先级翻转问题
FreeRTOS优先级翻转是当高优先级任务因等待低优先级任务占用的资源(如互斥锁)被阻塞,而中优先级任务趁机执行,导致高优先级任务无法及时运行的调度异常。 场景示例: 任务优先级:存在三个任务,优…...
python 进程池的基本使用
Python 进程池:Pool任务调度实现 在现代计算机系统重,处理器核心数量的增加为并行计算提供了强大的硬件基础。Python的 multiprocessing 模块中的进程池(Pool)机制,为开发者提供了 一个高效且易用的并行处理框架。 通…...
Gerbv终极指南:从新手到专家的PCB设计验证全流程实战
Gerbv终极指南:从新手到专家的PCB设计验证全流程实战 【免费下载链接】gerbv Maintained fork of gerbv, carrying mostly bugfixes 项目地址: https://gitcode.com/gh_mirrors/ge/gerbv 你是否曾因Gerber文件显示异常而耽误PCB生产进度?是否在多…...
告别登录系统!手把手教你用BMC和NVMe-MI 1.2b监控企业级SSD健康状态
企业级SSD健康监控实战:基于BMC与NVMe-MI 1.2b的带外诊断指南 当服务器突然宕机或操作系统无法启动时,传统依赖系统内工具(如smartctl)的SSD监控手段立即失效。此时,运维工程师往往陷入被动——既无法确认是否为存储设…...
ADAPT-VQE算法:量子计算中的自适应变分本征求解器
1. ADAPT-VQE算法概述ADAPT-VQE(Adaptive Derivative-Assembled Pseudo-Trotter Variational Quantum Eigensolver)是一种改进的变分量子本征求解器算法,专为量子计算机设计用于高效模拟量子多体系统的基态性质。与传统VQE使用固定参数化量子…...
告别玄学:STM32H7系列SPI驱动TFT屏的完整配置清单与稳定性实战指南
STM32H7系列SPI驱动TFT屏的黄金配置法则与稳定性实战 记得第一次用STM32H750驱动SPI接口的TFT屏时,那种从兴奋到困惑再到恍然大悟的心路历程至今难忘。屏幕在调试时表现良好,一旦脱离调试环境就频繁黑屏,这种"玄学"问题困扰了我整整…...
告别串口扩展坞!用CH344Q芯片自己动手做一个高速USB转4串口模块(附完整原理图)
从零打造高速USB转4串口模块:CH344Q实战指南 在嵌入式开发和硬件调试过程中,多串口设备的需求日益增长。传统方案往往依赖笨重的串口扩展坞或价格高昂的商业模块,而今天我们将探索一种更灵活、更具性价比的解决方案——基于CH344Q芯片自主设计…...
程序员学英语:从‘revoke API’到‘supervise进程’,这些技术文档高频词原来有共同基因
程序员学英语:解码技术文档中的拉丁词根密码 技术文档里那些看似晦涩的英文术语,其实藏着程序员专属的"密码本"。当你在Kubernetes日志里看到revoke permissions时,是否想过为什么撤销操作要用revoke?当调试多进程程序遇…...
Kandinsky-5.0-I2V-Lite-5s GPU显存策略详解:offload机制在24GB卡上的工程实现
Kandinsky-5.0-I2V-Lite-5s GPU显存策略详解:offload机制在24GB卡上的工程实现 1. 模型概述与技术背景 Kandinsky-5.0-I2V-Lite-5s是一款轻量级图生视频模型,能够将单张输入图片转换为约5秒、24fps的短视频。与完整版相比,Lite版本通过模型…...
【ClickHouse实战】巧用IFNULL、COALESCE与NULLIF:构建健壮查询的默认值策略
1. 空值处理的必要性:为什么我们需要默认值策略? 在数据分析领域,空值(NULL)就像数据海洋中的暗礁,稍不注意就会导致查询结果偏离预期。特别是在ClickHouse这类高性能分析型数据库中,空值处理不…...
Phi-3.5-mini-instruct网页版教程:支持历史会话保存与导出的实用功能
Phi-3.5-mini-instruct网页版教程:支持历史会话保存与导出的实用功能 1. 产品介绍 Phi-3.5-mini-instruct是一款轻量级但功能强大的中文文本生成模型,特别适合日常办公和学习场景。它能够处理多种文本任务,包括但不限于: 中文问…...
SAP ABAP HANA 新语法实战:从VALUE到REDUCE的代码现代化重构
1. 为什么需要重构传统ABAP代码 如果你已经使用ABAP开发了一段时间,肯定遇到过这样的场景:一个简单的业务逻辑需要写几十行代码,各种循环嵌套、临时变量和内表操作让人眼花缭乱。特别是在SAP HANA环境下,这些传统写法不仅难以维护…...
