基于javaweb的SpringBoot图书管理系统(java+springboot+mybatis+jpa+html+thymeleaf+maven+mysql)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

460023052402

470023052402

480023052402

490023052402

500023052402

基于javaweb的SpringBoot图书管理系统(java+springboot+mybatis+jpa+html+thymeleaf+maven+mysql)

项目介绍

该项目比较界面简单大方,功能简洁,只有三张表,适合java初学者或者课程设计; 主要功能包括: 首页轮播图 图书管理:图书列表、图书上架; 借阅管理:搜索图书、借阅图书、归还图书; 读者管理:读者列表、读者添加;

用户中心:个人信息、用户管理、添加管理员;

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;

技术栈

  1. 后端:springboot+jpa+mybatis+springsecurity+swagger+

  2. 前端:html+javaex

使用说明

运行项目,输入localhost:8080 登录
管理员用户名:admin 密码:123456

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    @PostMapping("/add")
public R addBook(@RequestBody Book book) {
return R.success(CodeEnum.SUCCESS,bookService.addBook(book));
}

@ApiOperation("编辑图书")
@PostMapping("/update")
public R modifyBook(@RequestBody Book book) {
return R.success(CodeEnum.SUCCESS,bookService.updateBook(book));
}


@ApiOperation("图书详情")
@GetMapping("/detail")
public R bookDetail(Integer id) {
return R.success(CodeEnum.SUCCESS,bookService.findBookById(id));
}

@ApiOperation("图书详情 根据ISBN获取")
@GetMapping("/detailByIsbn")
public R bookDetailByIsbn(String isbn) {
return R.success(CodeEnum.SUCCESS,bookService.findBookByIsbn(isbn));
}

@ApiOperation("删除图书")
@GetMapping("/delete")
public R delBook(Integer id) {
bookService.deleteBook(id);
return R.success(CodeEnum.SUCCESS);
}

}
package com.book.manager.controller;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

/**
* @Description 用户管理
*/
@Api(tags = "图书管理")
@RestController
@RequestMapping("/book")
public class BookController {

@Autowired
private BookService bookService;

@ApiOperation("图书搜索列表")
@PostMapping("/list")
public R getBookList(@RequestBody PageIn pageIn) {
if (pageIn == null) {
return R.fail(CodeEnum.PARAM_ERROR);
}

return R.success(CodeEnum.SUCCESS,bookService.getBookList(pageIn));
}

@ApiOperation("添加图书")
@PostMapping("/add")
public R addBook(@RequestBody Book book) {
return R.success(CodeEnum.SUCCESS,bookService.addBook(book));
}

@ApiOperation("编辑图书")
@PostMapping("/update")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39


/**
* @Description 用户管理
*/
@Api(tags = "用户管理")
@RestController
@RequestMapping("/user")
public class UsersController {

@Autowired
private UserService userService;

@ApiOperation("用户列表")
@PostMapping("/list")
public R getUsers(@RequestBody PageIn pageIn) {
if (pageIn == null) {
return R.fail(CodeEnum.PARAM_ERROR);
}
// 封装分页出参对象
PageInfo<Users> userList = userService.getUserList(pageIn);
PageOut pageOut = new PageOut();
pageOut.setCurrPage(userList.getPageNum());
pageOut.setPageSize(userList.getPageSize());
pageOut.setTotal((int) userList.getTotal());
List<UserOut> outs = new ArrayList<>();
for (Users users : userList.getList()) {
UserOut out = new UserOut();
BeanUtils.copyProperties(users,out);
out.setIdent(ConvertUtil.identStr(users.getIdentity()));
out.setBirth(DateUtil.format(users.getBirthday(),Constants.DATE_FORMAT));
outs.add(out);
}

pageOut.setList(outs);

return R.success(CodeEnum.SUCCESS,pageOut);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
@Api(tags = "路由")
@Controller
public class RouteController {

/**
* 跳转登录
*/
@ApiOperation("跳转登录页")
@GetMapping({"/login","/","logout"})
public String toLogin() {
return "login";
}

/**
* 跳转首页
*/
@ApiOperation("跳转首页")
@RequestMapping({"/index"})
public String toIndex() {
return "index";
}

/**
* 跳转欢迎页面
*/
@ApiOperation("跳转欢迎页面")
@RequestMapping({"/welcome"})
public String toWelcome() {
return "welcome";
}

/**
* 二级路由跳转
* @param name 映射名称
*/
@ApiOperation("二级路由跳转")
@RequestMapping("/{filename}/{name}")
public String change(@PathVariable String filename,@PathVariable String name) {
return filename+"/"+name;
}
}
package com.book.manager.interceptor;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
            String username = (String) map.get("username");
if (StrUtil.isNotBlank(username)) {
Users users = userService.findByUsername(username);
UserOut out = new UserOut();
BeanUtils.copyProperties(users,out);
out.setBirth(DateUtil.format(users.getBirthday(),Constants.DATE_FORMAT));
Integer identity = users.getIdentity();
String ident = "";
if (identity == Constants.STUDENT) {
ident = Constants.STU_STR;
}else if (identity == Constants.TEACHER) {
ident = Constants.TEA_STR;
}else if (identity == Constants.OTHER) {
ident = Constants.OTHER_STR;
}else if (identity == Constants.ADMIN) {
ident = Constants.ADMIN_STR;
}
out.setIdent(ident);
return R.success(CodeEnum.SUCCESS,out);
}
}
return R.fail(CodeEnum.USER_NOT_FOUND);
}
}
package com.book.manager.controller;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
* @Description 用户登录

*/
@Controller
public class LoginController {

@Autowired
private UserService userService;

/**
* 登录, 使用SpringSecurity 无需自己编写登录接口
*/
// @ResponseBody
// @RequestMapping(method = RequestMethod.POST,value = "/user/login")
// public R login(HttpServletRequest request, HttpServletResponse response) throws IOException {
// String username = request.getParameter("username");
// String password = request.getParameter("password");
//
// if (StrUtil.isNotBlank(username)&&StrUtil.isNotBlank(password)) {
// Users users = userService. login(username, password);
// if (users!=null) {
// request.getSession().setAttribute("username",username);
// return R.success(CodeEnum.SUCCESS);
// }
// }
//
// return R.fail(CodeEnum.NAME_OR_PASS_ERROR);
// }
}
package com.book.manager.controller;


/**


项目链接:
https://javayms.github.io?id=411422272105200bk
https://javayms.pages.dev?id=411422272105200bk