当前位置: 首页 > news >正文

【图书管理系统】环境介绍、设计数据库和表、配置文件、引入依赖

0. 环境介绍

(1)JDK版本:JDK_8(JDK_1.8)
(2)Java语言版本:8
(3)SpringBoot版本:2.6.13
(4)Maven仓库:阿里云
(5)MySQL版本:8.0.41(Ubuntu0.20.04.1)

1. 建数据库和表

1.1 数据库表设计介绍

数据库表是应⽤程序开发中的⼀个重要环节, 数据库表的设计往往会决定我们的应⽤需求是否能顺利实现,甚⾄决定我们的实现⽅式.

如何设计表以及这些表有哪些字段, 这些表存在哪些关系 也是⾮常重要的.

数据库表设计是依据业务需求来设计的. 如何设计出优秀的数据库表, 与经验有很⼤关系.

数据库表通常分两种: 实体表和关系表.
分析我们的需求, 图书管理系统相对来说⽐较简单, 只有两个实体: ⽤⼾和图书, 并且⽤⼾和图书之间没有关联关系

表的具体字段设计, 也与需求有关.
⽤⼾表有⽤⼾名和密码即可(复杂的业务可能还涉及昵称, 年龄等资料)
图书表有哪些字段, 也是参考需求页面(通常不是⼀个页面决定的, 而是要对整个系统进⾏全⾯分析观察后定的。

1.2 创建数据库和表

--创建数据库 book_management_system
DROP DATABASE IF EXISTS book_management_system;
CREATE DATABASE book_management_system DEFAULT CHARACTER SET utf8mb4;-- 切换数据库
use book_management_system-- user_info ⽤户表
DROP TABLE IF EXISTS user_info;
CREATE TABLE user_info (`id` INT NOT NULL AUTO_INCREMENT,`user_name` VARCHAR ( 128 ) NOT NULL,`password` VARCHAR ( 128 ) NOT NULL,`delete_flag` TINYINT ( 4 ) NULL DEFAULT 0,`create_time` DATETIME DEFAULT now(),`update_time` DATETIME DEFAULT now() ON UPDATE now(),PRIMARY KEY ( `id` ),
UNIQUE INDEX `user_name_UNIQUE` ( `user_name` ASC )) ENGINE = INNODB DEFAULT
CHARACTER
SET = utf8mb4 COMMENT = '用户表';-- book_info 图书表
DROP TABLE IF EXISTS book_info;
CREATE TABLE `book_info` (`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,`book_name` VARCHAR ( 127 ) NOT NULL,`author` VARCHAR ( 127 ) NOT NULL,`count` INT ( 11 ) NOT NULL,`price` DECIMAL (7,2 ) NOT NULL,`publish` VARCHAR ( 256 ) NOT NULL,`status` TINYINT ( 4 ) DEFAULT 1 COMMENT '0-⽆效, 1-正常, 2-不允许借阅',`create_time` DATETIME DEFAULT now(),`update_time` DATETIME DEFAULT now() ON UPDATE now(),
PRIMARY KEY ( `id` ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;-- 初始化数据
INSERT INTO user_info ( user_name, password ) VALUES ( "admin", "admin" );-- 初始化图书数据
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('阿Q正传', '鲁迅', 29, 22.00, '应急管理出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('漫画讲透经济学', '杜赢', 5, 98.56, '四川人民出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('三体', '刘慈欣', 9, 102.67, '重庆出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('纳兰容若传', '李婍', 16, 178.00, '台海出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('人类简史', '尤瓦尔·赫拉利', 34, 68.50, '中信出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('Python编程从入门到实践', 'Eric Matthes', 22, 89.00, '人民邮电出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('百年孤独', '加西亚·马尔克斯', 17, 55.80, '南海出版公司');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('时间简史', '史蒂芬·霍金', 9, 72.30, '湖南科学技术出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('活着', '余华', 45, 36.90, '作家出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('机器学习实战', 'Peter Harrington', 12, 118.00, '机械工业出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('明朝那些事儿', '当年明月', 28, 198.50, '中国海关出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('乌合之众', '古斯塔夫·勒庞', 19, 42.60, '中央编译出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('算法导论', 'Thomas H.Cormen', 7, 156.00, '清华大学出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('平凡的世界', '路遥', 33, 125.00, '北京十月文艺出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('追风筝的人', '卡勒德·胡赛尼', 24, 49.90, '上海人民出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('深入理解Java虚拟机', '周志明', 15, 99.00, '电子工业出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('小王子', '安托万·德·圣-埃克苏佩里', 50, 29.90, '人民文学出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('失控', '凯文·凯利', 11, 88.00, '新星出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('白夜行', '东野圭吾', 31, 65.50, '南海出版公司');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('思考,快与慢', '丹尼尔·卡尼曼', 8, 78.60, '中信出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('浪潮之巅', '吴军', 14, 108.00, '人民邮电出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('围城', '钱钟书', 27, 45.00, '人民文学出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('黑客与画家', 'Paul Graham', 6, 66.60, '人民邮电出版社');
INSERT INTO `book_info` (book_name,author,count, price, publish) VALUES ('沉默的大多数', '王小波', 38, 58.80, '北京十月文艺出版社');

在业务中一般都会

2.配置文件和引入依赖

2.1 application.yml文件配置

# 数据库连接配置
spring:datasource:# MySQL在远程服务器上url: jdbc:mysql://x.x.x.x:3306/mybatis_test?characterEncoding=utf8&useSSL=falseusername: root  #MySQL账号password: root  #MySQL密码driver-class-name: com.mysql.cj.jdbc.Drivermybatis:configuration: # 配置打印 MyBatis⽇志log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true #配置驼峰⾃动转换# 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件mapper-locations: classpath:mapper/**Mapper.xml

2.2 Mybatis依赖和MySQL驱动依赖

		<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>annotationProcessor</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version><scope>provided</scope></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter-test</artifactId><version>2.2.2</version><scope>test</scope></dependency>

3. 实体类创建

实体类直接对应数据库表​​,主要用于​​数据持久化​​,与数据库交互。

在本项目中,实体类写在model文件夹中。

(1)BookInfo.java

@Data
public class BookInfo {private Integer id;private String bookName;private String author;private Integer count;//前端展示精度@JsonFormat(shape = JsonFormat.Shape.STRING )private BigDecimal price;private String publish;private Integer status; //1-可借阅,2-不可借阅 0-无效// 数据库中不存在的字段private String statusCN; // 可借阅,不可借阅 无效private Date createTime;private Date updateTime;}

(2)UserInfo.java


@Data
public class UserInfo {private Integer id;private String userName;private String password;private Integer deleteFlag;private Date CreateTime;private Date updateTime;
}

4. 项目介绍

(1)管理系统登录界面:
在这里插入图片描述
(2)图书管理界面
在这里插入图片描述

(3)添加图书界面
在这里插入图片描述

(4)修改图书界面

在这里插入图片描述
(5)批量删除界面
在这里插入图片描述

http://www.xdnf.cn/news/272953.html

相关文章:

  • OpenCv实战笔记(1)在win11搭建opencv4.11.1 + qt5.15.2 + vs2019_x64开发环境
  • Java捕获InterruptedException异常后,会自动清空中断状态
  • idea创建springboot工程-指定阿里云地址创建工程报错
  • QT数据库实验
  • Electron 从零开始:构建你的第一个桌面应用
  • Qt帮助文档框架
  • Qt .pro配置msvc相关命令(二)
  • GPU集群训练经验评估框架:运营经理经验分析篇
  • 修复笔记:SkyReels-V2 项目中的 torch.load 警告
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】4.2 数据类型转换(CAST函数/自定义函数)
  • Qwen2.5模型性能测评 - 速度指标
  • 【LeetCode Hot100】动态规划篇
  • 记录ruoyi-flowable-plus第一次运行流程报错
  • 编程速递-RAD Studio 12.3 Athens四月补丁:关注软件性能的开发者,安装此补丁十分必要
  • 【Linux】日志与策略模式、线程池
  • 《Vue3学习手记8》
  • 高等数学第三章---微分中值定理与导数的应用(3.4~3.5)
  • LeetCode 热题 100 994. 腐烂的橘子
  • CF1000E We Need More Bosses
  • 【转载】【翻译】图解智能体到智能体 (A2A) 协议
  • 冯诺依曼结构与哈佛架构深度解析
  • 【Linux系统】第二节—基础指令(2)
  • 13:图像处理—畸变矫正详解
  • 修复笔记:获取 torch._dynamo 的详细日志信息
  • 【数据结构】励志大厂版·初阶(复习+刷题)排序
  • 【程序+论文】大规模新能源并网下的火电机组深度调峰经济调度
  • TFQMR和BiCGStab方法比较
  • 缓存与数据库的高效读写流程解析
  • 8.1 Python+Docker+企业微信集成实战:自动化报告生成与CI/CD部署全攻略
  • php study 网站出现404 - Page Not Found 未找到