Book-Manager 图书管理系统(基于SpringBoot、MyBatis)
目录
- 1,项目介绍
- 2,技术选型
- 3,数据库构建
- 1,创建库
- 2,创建表
- 4,项目构建
- 5,功能介绍
- 1,用户首页
- 2,登录界面
- 3,菜单列表
- 4,菜单管理
- 5,角色管理
- 6,用户管理
- 7,图书条目
- 8,图书库存
- 9,图书借阅
- 10,字典管理
- 11,作者管理
- 6,项目部署
- 1,以 jar 包方式部署
- 2,以 war 包方式部署
1,项目介绍
book-manager 是一套图书管理系统,前端界面使用了 EasyUI 框架,后端基于SpringBoot+MyBatis 实现。
本系统包含首页门户、系统管理、权限管理、图书管理等模块。
源码地址:
https://gitee.com/codeshellme/book-manager
2,技术选型
主要技术
技术 | 说明 | 官网 |
---|---|---|
Java | 后端语言 | https://www.java.com/zh-CN/ |
MySQL | 数据库 | https://www.mysql.com/ |
前端技术框架
技术 | 说明 | 官网 |
---|---|---|
JQuery | JavaScript 库 | https://jquery.com/ |
EasyUI | Web UI 框架 | https://www.jeasyui.net/ |
后端技术框架
技术 | 说明 | 官网 |
---|---|---|
SpringBoot | 容器+MVC框架 | https://spring.io/projects/spring-boot |
SpringSecurity | 认证和授权框架 | https://spring.io/projects/spring-security |
JWT | JWT 登录支持 | https://github.com/jwtk/jjwt |
MyBatis | ORM 框架 | http://www.mybatis.org/mybatis-3/zh/index.html |
Lombok | Java 对象封装工具 | https://github.com/rzwitserloot/lombok |
PageHelper | MyBatis 分页插件 | https://pagehelper.github.io |
Hutool | Java 工具类库 | https://www.hutool.cn |
Maven | 项目构建工具 | https://maven.apache.org |
开发工具
工具 | 说明 | 官网 |
---|---|---|
IDEA | Java 集成开发环境 | https://www.jetbrains.com/idea/download/ |
X-shell | Linux 远程连接工具 | https://www.netsarang.com/zh/all-downloads/ |
Navicat | 数据库连接工具 | https://www.navicat.com.cn |
Git | 版本控制工具 | https://git-scm.com |
Typora | Markdown 编辑器 | https://typora.io/ |
Idea 插件
这里介绍两个 Idea 插件(File -> Settings -> Plugins
):
- Lombok
- Free MyBatis plugin
因为项目中使用了 Lombok,所以 Lombok 插件是必须的;Free MyBatis plugin 可以实现 Dao 层接口到 Mapper 文件的跳转。
3,数据库构建
数据库使用的是 MySQL。
1,创建库
新建 book
数据库:
CREATE DATABASE `book` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
2,创建表
1,创建用户表 ums_user
:
-- Table structure for ums_user
DROP TABLE IF EXISTS `ums_user`;
CREATE TABLE `ums_user` (`id` int(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增 ID',`username` varchar(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',`password` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',`nickname` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '昵称',`pincode` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '拼音简码',`status` tinyint(0) UNSIGNED NOT NULL DEFAULT 1 COMMENT '帐号启用状态:0->禁用;1->启用',`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',`role_id` int(0) UNSIGNED NOT NULL COMMENT '角色 ID',PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `idx_username`(`username`) USING BTREE COMMENT '唯一索引'
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- Records of ums_user
INSERT INTO `ums_user` VALUES (1, 'admin', '3', '超级管理员', 'cjgly', 1, now(), now(), 1);
INSERT INTO `ums_user` VALUES (2, 'book', '5', '图书管理员', 'tsgly', 1, now(), now(), 2);
INSERT INTO `ums_user` VALUES (3, '11', '11', '11', '11', 1, now(), now(), 3);
INSERT INTO `ums_user` VALUES (4, '12', '12', '12', '12', 1, now(), now(), 3);
2,创建角色表 ums_role
:
-- Table structure for ums_role
DROP TABLE IF EXISTS `ums_role`;
CREATE TABLE `ums_role` (`id` int(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增 id',`name` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色名称',`sign` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色标识',`remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色说明',`status` tinyint(0) UNSIGNED NOT NULL DEFAULT 1 COMMENT '帐号启用状态:0->禁用;1->启用',`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `idx_sign`(`sign`) USING BTREE COMMENT '唯一索引,sign 作为唯一标识,不能重复'
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- Records of ums_role
INSERT INTO `ums_role` VALUES (1, '超级用户', 'super', '拥有最高权限', 1, now(), now());
INSERT INTO `ums_role` VALUES (2, '图书管理员', 'manager', '图书管理员', 1, now(), now());
INSERT INTO `ums_role` VALUES (3, '普通用户', 'user', '普通用户', 1, now(), now());
3,创建菜单表 ums_menu
:
-- Table structure for ums_menu
DROP TABLE IF EXISTS `ums_menu`;
CREATE TABLE `ums_menu` (`id` int(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增 ID',`parent_id` int(0) UNSIGNED NOT NULL COMMENT '上级菜单id',`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '菜单名称',`icon` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单图标',`url` varchar(80) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '菜单url',`type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '菜单类型:DIR/SUBMENU',`order` tinyint(0) UNSIGNED NOT NULL COMMENT '菜单排序',`status` tinyint(0) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态:0->禁用;1->启用',`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- Records of ums_menu
INSERT INTO `ums_menu` VALUES (1, 0, '权限管理', 'icon-computer-edit', '/', 'DIR', 1, 1, now(), now());
INSERT INTO `ums_menu` VALUES (2, 1, '菜单管理', 'icon-node-tree16', '/menu', 'SUBMENU', 1, 1, now(), now());
INSERT INTO `ums_menu` VALUES (3, 1, '角色管理', 'icon-user-group', '/role', 'SUBMENU', 2, 1, now(), now());
INSERT INTO `ums_menu` VALUES (4, 0, '图书管理', 'icon-book-open', '/', 'DIR', 2, 1, now(), now());
INSERT INTO `ums_menu` VALUES (5, 4, '图书借阅', 'icon-book-tabs', '/book_borrow', 'SUBMENU', 3, 1, now(), now());
INSERT INTO `ums_menu` VALUES (11, 1, '用户管理', 'icon-users', '/user', 'SUBMENU', 3, 1, now(), now());
INSERT INTO `ums_menu` VALUES (12, 0, '系统管理', 'icon-wrench', '/', 'DIR', 4, 1, now(), now());
INSERT INTO `ums_menu` VALUES (13, 12, '字典管理', 'icon-application-view-columns', '/sys_dict', 'SUBMENU', 1, 1, now(), now());
INSERT INTO `ums_menu` VALUES (14, 12, '作者管理', 'icon-user-suit', '/sys_author', 'SUBMENU', 2, 1, now(), now());
INSERT INTO `ums_menu` VALUES (15, 4, '图书条目', 'icon-application-side-list', '/sys_book', 'SUBMENU', 1, 1, now(), now());
INSERT INTO `ums_menu` VALUES (16, 4, '图书库存', 'icon-book-key', '/book_stock', 'SUBMENU', 2, 1, now(), now());
4,创建角色菜单关系表 ums_role_menu
:
-- Table structure for ums_role_menu
DROP TABLE IF EXISTS `ums_role_menu`;
CREATE TABLE `ums_role_menu` (`id` int(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增 id',`role_id` int(0) UNSIGNED NOT NULL COMMENT '角色 id',`menu_id` int(0) UNSIGNED NOT NULL COMMENT '角色 id 对应的菜单 id',PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `idx_role_menu`(`role_id`, `menu_id`) USING BTREE COMMENT '联合唯一索引'
) ENGINE = InnoDB AUTO_INCREMENT = 80 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- Records of ums_role_menu
INSERT INTO `ums_role_menu` VALUES (11, 1, 1);
INSERT INTO `ums_role_menu` VALUES (55, 1, 2);
INSERT INTO `ums_role_menu` VALUES (14, 1, 3);
INSERT INTO `ums_role_menu` VALUES (71, 1, 4);
INSERT INTO `ums_role_menu` VALUES (69, 1, 5);
INSERT INTO `ums_role_menu` VALUES (70, 1, 6);
INSERT INTO `ums_role_menu` VALUES (3, 1, 7);
INSERT INTO `ums_role_menu` VALUES (5, 1, 9);
INSERT INTO `ums_role_menu` VALUES (67, 1, 11);
INSERT INTO `ums_role_menu` VALUES (73, 1, 12);
INSERT INTO `ums_role_menu` VALUES (72, 1, 13);
INSERT INTO `ums_role_menu` VALUES (74, 1, 14);
INSERT INTO `ums_role_menu` VALUES (76, 1, 15);
INSERT INTO `ums_role_menu` VALUES (78, 1, 16);
INSERT INTO `ums_role_menu` VALUES (60, 2, 1);
INSERT INTO `ums_role_menu` VALUES (59, 2, 3);
INSERT INTO `ums_role_menu` VALUES (44, 2, 4);
INSERT INTO `ums_role_menu` VALUES (43, 2, 6);
INSERT INTO `ums_role_menu` VALUES (42, 2, 7);
INSERT INTO `ums_role_menu` VALUES (41, 2, 9);
INSERT INTO `ums_role_menu` VALUES (66, 3, 4);
INSERT INTO `ums_role_menu` VALUES (65, 3, 5);
5,创建字典表 sys_dict
:
-- Table structure for sys_dict
DROP TABLE IF EXISTS `sys_dict`;
CREATE TABLE `sys_dict` (`id` int(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增 id',`father_id` int(0) UNSIGNED NOT NULL COMMENT '父 id',`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称',`keyname` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '关键字',`dicttype` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典类型',`sn` int(0) UNSIGNED NOT NULL COMMENT '排序',`status` tinyint(0) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态:0->禁用;1->启用',`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',`pincode` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称简码',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 22 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- Records of sys_dict
INSERT INTO `sys_dict` VALUES (1, 0, '国籍', 'Nationality', 'Nationality', 0, 1, now(), now(), 'gj');
INSERT INTO `sys_dict` VALUES (2, 1, '中国', 'China', 'Nationality', 1, 1, now(), now(), 'zg');
INSERT INTO `sys_dict` VALUES (3, 1, '美国', 'America', 'Nationality', 2, 1, now(), now(), 'mg');
INSERT INTO `sys_dict` VALUES (4, 1, '俄罗斯', 'Russia', 'Nationality', 3, 1, now(), now(), 'els');
INSERT INTO `sys_dict` VALUES (5, 1, '法国', 'France', 'Nationality', 4, 1, now(), now(), 'fg');
INSERT INTO `sys_dict` VALUES (6, 1, '德国', 'Germany', 'Nationality', 5, 1, now(), now(), 'dg');
INSERT INTO `sys_dict` VALUES (7, 1, '日本', 'Japan', 'Nationality', 6, 1, now(), now(), 'rb');
INSERT INTO `sys_dict` VALUES (8, 1, '新加坡', 'Singapore', 'Nationality', 7, 1, now(), now(), 'xjp');
INSERT INTO `sys_dict` VALUES (9, 0, '性别', 'Sex', 'Sex', 0, 1, now(), now(), 'xb');
INSERT INTO `sys_dict` VALUES (10, 9, '男', 'Man', 'Sex', 1, 1, now(), now(), 'n');
INSERT INTO `sys_dict` VALUES (11, 9, '女', 'Women', 'Sex', 2, 1, now(), now(), 'n');
INSERT INTO `sys_dict` VALUES (12, 0, '图书类型', 'Booktype', 'Booktype', 0, 1, now(), now(), 'tslx');
INSERT INTO `sys_dict` VALUES (13, 12, '小说', 'Novel', 'Booktype', 1, 1, now(), now(), 'xs');
INSERT INTO `sys_dict` VALUES (14, 12, '文学', 'Literature', 'Booktype', 2, 1, now(), now(), 'wx');
INSERT INTO `sys_dict` VALUES (15, 12, '传记', 'Biography', 'Booktype', 3, 1, now(), now(), 'zj');
INSERT INTO `sys_dict` VALUES (16, 12, '艺术', 'Art', 'Booktype', 4, 1, now(), now(), 'ys');
INSERT INTO `sys_dict` VALUES (17, 12, '摄影', 'Photography', 'Booktype', 5, 1, now(), now(), 'sy');
INSERT INTO `sys_dict` VALUES (18, 12, '哲学', 'Philosophy', 'Booktype', 6, 1, now(), now(), 'zx');
INSERT INTO `sys_dict` VALUES (19, 12, '历史', 'History', 'Booktype', 7, 1, now(), now(), 'ls');
INSERT INTO `sys_dict` VALUES (20, 12, '军事', 'Military', 'Booktype', 8, 1, now(), now(), 'js');
INSERT INTO `sys_dict` VALUES (21, 12, '计算机', 'Computer', 'Booktype', 9, 1, now(), now(), 'jsj');
6,创建图书作者表 book_author
:
-- Table structure for book_author
DROP TABLE IF EXISTS `book_author`;
CREATE TABLE `book_author` (`id` int(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增 id',`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名',`pincode` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名简码',`sex` tinyint(0) UNSIGNED NOT NULL COMMENT '性别:0->女,1->男',`nationality_id` int(0) UNSIGNED NOT NULL COMMENT '国籍 id,见 sys_dict 表',`status` tinyint(0) UNSIGNED NOT NULL DEFAULT 1 COMMENT '启用状态:0->禁用;1->启用',`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `idx_name`(`name`) USING BTREE COMMENT '唯一索引'
) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- Records of book_author
INSERT INTO `book_author` VALUES (1, '鲁迅', 'lx', 1, 2, 1, now(), now());
INSERT INTO `book_author` VALUES (2, '沈从文', 'scw', 1, 2, 1, now(), now());
INSERT INTO `book_author` VALUES (3, '张爱玲', 'zal', 0, 2, 1, now(), now());
INSERT INTO `book_author` VALUES (4, '巴金', 'bj', 1, 2, 1, now(), now());
INSERT INTO `book_author` VALUES (5, '钱钟书', 'qzs', 1, 2, 1, now(), now());
INSERT INTO `book_author` VALUES (6, '茅盾', 'md', 1, 2, 1, now(), now());
INSERT INTO `book_author` VALUES (7, '莫言', 'my', 1, 2, 1, now(), now());
INSERT INTO `book_author` VALUES (8, '史铁生', 'sts', 1, 2, 1, now(), now());
INSERT INTO `book_author` VALUES (9, '余秋雨', 'yqy', 1, 2, 1, now(), now());
INSERT INTO `book_author` VALUES (10, '韩寒', 'hh', 1, 2, 1, now(), now());
INSERT INTO `book_author` VALUES (11, '郭敬明', 'gjm', 1, 2, 1, now(), now());
INSERT INTO `book_author` VALUES (12, '易中天', 'yzt', 1, 2, 1, now(), now());
INSERT INTO `book_author` VALUES (14, '余华', 'yh', 1, 2, 1, now(), now());
INSERT INTO `book_author` VALUES (15, '刘震云', 'lzy', 1, 2, 1, now(), now());
7,创建图书条目表 book_item
:
-- Table structure for book_item
DROP TABLE IF EXISTS `book_item`;
CREATE TABLE `book_item` (`id` int(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增 id',`name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '书名',`pincode` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '书名简码',`type_id` int(0) UNSIGNED NOT NULL COMMENT '书的类型',`author_id` int(0) UNSIGNED NOT NULL COMMENT '作者 id',`publisher` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '出版社',`status` tinyint(0) UNSIGNED NOT NULL DEFAULT 1 COMMENT '0->禁用;1->启用',`remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `idx`(`name`) USING BTREE COMMENT '唯一索引'
) ENGINE = InnoDB AUTO_INCREMENT = 27 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- Records of book_item
INSERT INTO `book_item` VALUES (1, '呐喊', 'nh', 14, 1, 'aaa', 1, 'aaaaa', now(), now());
INSERT INTO `book_item` VALUES (2, '彷徨', 'ph', 14, 1, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (3, '围城', 'wc', 13, 5, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (4, '人·兽·鬼', 'rsg', 13, 5, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (5, '丰乳肥臀', 'frft', 13, 7, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (6, '生死疲劳', 'sspl', 13, 7, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (7, '红高粱家族', 'hgljz', 13, 7, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (8, '我与地坛', 'wydt', 14, 8, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (9, '务虚笔记', 'wxbj', 14, 8, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (10, '病隙碎笔', 'bxsb', 14, 8, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (11, '文化苦旅', 'whkl', 14, 9, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (12, '山居笔记', 'sjbj', 14, 9, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (13, '千年一叹', 'qnyt', 14, 9, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (14, '行者无疆', 'xzwj', 14, 9, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (15, '霜冷长河', 'slch', 14, 9, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (16, '借我一生', 'jwys', 14, 9, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (17, '三重门', 'scm', 13, 10, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (18, '零下一度', 'lxyd', 13, 10, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (19, '像少年啦飞驰', 'xsnlfc', 13, 10, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (20, '一座城池', 'yzcc', 13, 10, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (21, '杂的文', 'zdw', 14, 10, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (22, '我所理解的生活', 'wsljdsh', 14, 10, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (23, '活着', 'hz', 13, 14, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (24, '许三观卖血记', 'xsgmxj', 13, 14, NULL, 1, NULL, now(), now());
INSERT INTO `book_item` VALUES (25, '兄弟', 'xd', 13, 14, NULL, 1, NULL, now(), now());
8,创建图书库存表 book_stock
:
-- Table structure for book_stock
DROP TABLE IF EXISTS `book_stock`;
CREATE TABLE `book_stock` (`id` int(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增 id',`book_id` int(0) UNSIGNED NOT NULL COMMENT 'book_item.id',`num` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '库存数',`status` tinyint(0) UNSIGNED NOT NULL DEFAULT 1 COMMENT '0->禁用;1->启用',`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `idx_bookid`(`book_id`) USING BTREE COMMENT '唯一索引'
) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- Records of book_stock
INSERT INTO `book_stock` VALUES (2, 5, 0, 1, now(), now());
INSERT INTO `book_stock` VALUES (3, 8, 5, 1, now(), now());
INSERT INTO `book_stock` VALUES (4, 9, 0, 1, now(), now());
INSERT INTO `book_stock` VALUES (5, 10, 10, 1, now(), now());
INSERT INTO `book_stock` VALUES (6, 2, 0, 1, now(), now());
INSERT INTO `book_stock` VALUES (7, 3, 0, 1, now(), now());
INSERT INTO `book_stock` VALUES (8, 4, 8, 1, now(), now());
INSERT INTO `book_stock` VALUES (9, 6, 0, 1, now(), now());
INSERT INTO `book_stock` VALUES (10, 7, 0, 1, now(), now());
INSERT INTO `book_stock` VALUES (12, 11, 0, 1, now(), now());
INSERT INTO `book_stock` VALUES (13, 17, 3, 1, now(), now());
9,创建图书借阅表 book_borrow
:
-- Table structure for book_borrow
DROP TABLE IF EXISTS `book_borrow`;
CREATE TABLE `book_borrow` (`id` int(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增 id',`stock_id` int(0) UNSIGNED NOT NULL COMMENT 'book_stock.id',`student_id` int(0) UNSIGNED NOT NULL COMMENT '学生 id',`student_name` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学生姓名',`status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'Y' COMMENT '借书状态 Y-> 借书 N->已还书',`borrow_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '借书时间',`return_time` datetime(0) NULL DEFAULT NULL COMMENT '还书时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- Records of book_borrow
INSERT INTO `book_borrow` VALUES (1, 5, 1, '学生01', 'Y', now(), NULL);
INSERT INTO `book_borrow` VALUES (4, 8, 1, '学生01', 'N', now(), now());
INSERT INTO `book_borrow` VALUES (5, 8, 2, '学生02', 'N', now(), now());
INSERT INTO `book_borrow` VALUES (6, 9, 2, '学生02', 'Y', now(), NULL);
INSERT INTO `book_borrow` VALUES (7, 10, 3, '学生03', 'Y', now(), NULL);
4,项目构建
从 GitHub 上拉去代码到 Idea 中,在配置文件 application.properties
中配置数据库信息。
启动类是 com.codeshellme.bookmanager.BookManagerApplication
,运行它就可以启动项目。
5,功能介绍
1,用户首页
2,登录界面
3,菜单列表
目前的菜单列表如下:
分别有:
- 权限管理:包括菜单管理,角色管理和用户管理
- 菜单管理:管理整个系统的菜单,每项菜单对应不同的功能
- 角色管理:管理整个系统的角色,每个角色可配置不同的菜单功能,比如:
super
角色拥有系统的最高权限,拥有系统中的所有功能manager
角色主要分配给图书管理员,可以拥有图书管理和系统管理功能,但不能拥有权限管理功能
- 用户管理:管理整个系统的用户,每个用户只能属于一种角色,拥有所属角色的所有功能
- 图书管理:主要用于管理图书
- 图书条目:最基础的图书信息
- 图书库存:代表图书馆中的所有图书库存,所有能进入库存的图书,都必须先进入图书条目
- 图书借阅:图书借阅相关功能,只有在库存中的图书才能被借阅
- 以上三者的范围关系为:图书条目 >= 图书库存 >= 图书借阅
- 系统管理:
- 字典管理:管理一些基础信息,比如图书都有哪些类型,作者的国籍都有哪些等
- 作者管理:每本书都有作者,该功能管理了系统中所有的作者信息
4,菜单管理
5,角色管理
6,用户管理
7,图书条目
8,图书库存
9,图书借阅
10,字典管理
11,作者管理
6,项目部署
下面介绍两种部署服务的方式:
- 以 jar 包方式部署
- 此方式使用 springboot 内置的 tomcat 运行
- 以 war 包方式部署
- 此方式使用外部 Tomcat
1,以 jar 包方式部署
用 Idea 打 jar 包非常方便,无需修改任何 pom.xml
配置,先双击 clean
,然后双击 package
,就可打成 jar 包。
打包成功后,会在 target
目录下生成一个 book-manager-0.0.1-SNAPSHOT.jar
文件,直接用 java
命令运行它即可启动项目:
> java -jar book-manager-0.0.1-SNAPSHOT.jar
2,以 war 包方式部署
首先需在 pom.xml
中加入打包方式:
<packaging>war</packaging>
然后,启动类 BookManagerApplication
继承 SpringBootServletInitializer
,并覆盖 configure
方法:
@SpringBootApplication
public class BookManagerApplication extends SpringBootServletInitializer {public static void main(String[] args) {SpringApplication.run(BookManagerApplication.class, args);}// 继承 SpringBootServletInitializer 实现 configure// 以便打 war 包,进行外部服务器部署@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(BookManagerApplication.class);}
}
然后,再次使用 maven
打包:
打包成功后,会在 target
目录下生成一个 book-manager-0.0.1-SNAPSHOT.war
文件,将其重命名为 book-manager.war
,放入 tomcat 的 webapps
目录中。
然后需要配置 Tomcat 的配置文件 server.xml
,其中可设置服务器端口号等信息,我们需在 Server>Service>Engine>Host
标签内加入下面配置:
<Context docBase="Tomcat根目录/webapps/book-manager" path="/" reloadable="true"/>
最后启动 Tomcat 即可。
另外,关于 springboot 相关的配置在 Tomcat根目录\webapps\book-manager\WEB-INF\classes\application.properties
文件中,其中包括数据库配置。
需要注意的是,该文件中的 server.port
已不起作用(因为现在的服务器是外部 Tomcat,所以端口号要去 Tomcat 的配置文件中进行配置)。
Book-Manager 图书管理系统(基于SpringBoot、MyBatis)相关推荐
- 基于Springboot+mybatis+mysql+html图书管理系统2
基于Springboot+mybatis+mysql+html图书管理系统2 一.系统介绍 二.功能展示 1.用户登陆 2.用户主页 3.图书查询 4.还书 5.个人信息修改 6.图书管理(管理员) ...
- 基于Springboot+mybatis+mysql+html图书管理系统
基于Springboot+mybatis+mysql+html图书管理系统 一.系统介绍 二.功能展示 1.用户登陆 2.用户主页 3.图书查询 4.还书 5.个人信息修改 6.图书管理(管理员) 7 ...
- 基于springboot+mybatis+mysql+html实现宠物医院管理系统(包含实训报告)
基于springboot+mybatis+mysql+html实现宠物医院管理系统(包含实训报告) 一.系统简介 二.系统主要功能界面 2.1登陆 2.2系统设置 2.3宠物管理 2.4预约管理 2. ...
- 基于springboot+mybatis+mysql+vue运动会报名管理系统
基于springboot+mybatis+mysql+vue运动会报名管理系统 一.系统介绍 二.功能展示 1.用户登陆 2.报名详情(运行员) 3.比赛报名(运动员) 4.个人参赛项目(运动员) 5 ...
- 基于springboot+mybatis+mysql+vue房屋租赁管理系统
基于springboot+mybatis+mysql+vue房屋租赁管理系统 一.系统介绍 二.功能展示 1.用户登陆 2.管理员端主要功能 2.房主角色端主要功能 3.租客角色端主要功能 三.其它系 ...
- 基于javaweb的平行志愿管理系统(java+springboot+mybatis+vue+mysql)
基于javaweb的平行志愿管理系统(java+springboot+mybatis+vue+mysql) 运行环境 Java≥8.MySQL≥5.7.Node.js≥10 开发工具 后端:eclip ...
- 基于springboot+mybatis+mysql+html企业人事管理系统
基于springboot+mybatis+mysql+html企业人事管理系统 一.系统介绍 二.功能展示 1.用户登陆 2.员工奖惩--员工 3.合同管理--员工 4.个人薪酬--员工 5.培训管理 ...
- 基于springboot+mybatis+jsp日用品商城管理系统
基于springboot+mybatis+jsp日用品商城管理系统 一.系统介绍 二.功能展示 1.主页(客户) 2.登陆.注册(客户) 3.我的购物车(客户) 4.我的订单(客户) 5.我的商铺(商 ...
- 基于springboot+mybatis+mysql+html实现校园疫情防控管理系统
基于springboot+mybatis+mysql+html实现校园疫情防控管理系统 一.系统介绍 二.采用技术及开发环境 1.开发技术 2.开发环境 二.功能展示 1.登陆 2.首页(管理员) 3 ...
- 基于springboot+mybatis+mysql+layui员工工资管理系统
基于springboot+mybatis+mysql+layui员工工资管理系统 一.目的 二.需求 功能划分 系统结构设计 软件界面截图 三.系统开发配置 四.获取源码 一.目的 运用JavaE ...
最新文章
- win10+Linux双系统安装及一些配置问题
- [NOI2010]能量采集
- python装饰器类-python_类装饰器
- 最全的C#图片处理帮助类ImageHelper
- Kinect 动作识别组件概要设计
- cocos2d-x3.0 实现HTTP请求GET、POST
- oracle更换rac节点,Oracle-rac 更改VIP地址—2节点的
- 【计算机科学基础】计算机概述
- html文件整体结构,HTML文件基本结构
- 苹果今年预计生产8000万部iPhone 12,多还是少?
- Linux学习12—文件服务
- Mongo 多语言模糊匹配
- 战旗html5播放器为什么卡顿,视频站启用html5播放器
- CS5211:DP/eDP to 2Port LVDS
- SYN, FIN, ACK, PSH, RST, URG含义
- Delegate.Combine
- 要画分子结构图,就用ChemDraw
- mysql sql wait 写法_MySQL里的wait_timeout
- php单双引号的区别与foreach 遍历
- Simulink Desktop Real-Time
热门文章
- matlab闭环直流调速系统实验,实验三双闭环直流调速系统MATLAB仿真.doc
- 二阶系统响应指标图_自动控制理论_3.3 二阶系统的瞬态响应
- element ui 框架的优势_Element UI 框架
- 【软件工程】软件工程需求分析——结构化分析
- 【软件工程】二、需求分析——怎么提需求?,怎么写需求?
- 基于hilbert变换的数字信号_基于Hilbert变换数字调相信号解调算法研究.doc
- 拉普拉斯方程续有限差分法
- js实现斗地主计分器
- 基于大数据技术的全国高速公路通行数据 动态监测平台建设
- 电子商务概论(农)之形考作业三