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

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 创建数据库和表

sql 复制代码
--创建数据库 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文件配置

yml 复制代码
# 数据库连接配置
spring:
  datasource:

    # MySQL在远程服务器上
    url: jdbc:mysql://x.x.x.x:3306/mybatis_test?characterEncoding=utf8&useSSL=false
    username: root  #MySQL账号
    password: root  #MySQL密码
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  configuration: # 配置打印 MyBatis⽇志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true #配置驼峰⾃动转换

# 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件
  mapper-locations: classpath:mapper/**Mapper.xml

2.2 Mybatis依赖和MySQL驱动依赖

xml 复制代码
		<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

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

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)批量删除界面

相关推荐
豆沙沙包?2 分钟前
2025年- H19-Lc127-48.旋转矩阵(矩阵)---java版
java·线性代数·矩阵
不是谁只是我30 分钟前
VMware-centOS7安装redis分布式集群
数据库·redis·分布式
文牧之44 分钟前
PostgreSQL 的 ANALYZE 命令
运维·数据库·postgresql
Blue.ztl1 小时前
菜鸟之路Day29一一MySQL之DDL
数据库·mysql·oracle
星迹日1 小时前
MySQL:联合查询
数据库·sql·mysql·联合查询
pqq的迷弟1 小时前
redis的持久化
数据库·redis·缓存
solomonzw1 小时前
with的用法
数据库·python·sqlite
懒懒小徐1 小时前
2023华为od机试C卷【跳格子3】
java·华为od·动态规划
奔驰的小野码1 小时前
SpringAI实现AI应用-搭建知识库
java·人工智能·spring boot·后端·spring·知识图谱
奔跑吧邓邓子1 小时前
DeepSeek与MySQL:开启数据智能新时代
数据库·mysql·融合·deepseek