@TOC

1.概述

使用mysql、springboot、mybatis等技术,完成由数据库到线性表再到数据库的简单数据交互。

2. 实现

1. 构建springboot项目



在pom.xml中修改依赖

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.0</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.book</groupId><artifactId>BookSystem</artifactId><version>0.0.1-SNAPSHOT</version><name>BookSystem</name><description>BookSystem</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-test</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

2. 编写配置文件

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/bookusername: rootpassword: rjj1125
logging:level:com: error

3. 构建映射类、服务类、线性表、实体类

  1. mapper
package com.book.mapper;import com.book.pojo.Books;
import com.book.utils.SequenceList;
import org.apache.ibatis.annotations.*;import java.awt.print.Book;
import java.util.List;/*** @author rjj* @date 2022/9/6 - 20:38*/
@Mapper
public interface BooksMapper{@Select("select * from books")List<Books> list();@Insert("insert into books value (#{isbn}, #{name}, #{author}, #{press}, #{price}) ")void updateDatabase(Books books);@Delete("delete from books")void clear();
}
  1. pojo
package com.book.pojo;import lombok.Data;/*** @author rjj* @date 2022/9/6 - 20:29*/
@Data
public class Books {private Long isbn;private String name;private String author;private String press;private float price;
}
  1. service
package com.book.service;import com.book.pojo.Books;/*** @author rjj* @date 2022/9/8 - 17:50*/
public interface BooksService{void init();String add(Books books);String delete(Long isbn);void end();String find(Long isbn);String update(Books book);String sort();String count();void show();
}
package com.book.service;import com.book.mapper.BooksMapper;
import com.book.pojo.Books;
import com.book.utils.SequenceList;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.awt.print.Book;
import java.util.Arrays;
import java.util.List;/*** @author rjj* @date 2022/9/6 - 21:36*/@Service
public class BooksServiceImpl implements BooksService {@Resourceprivate BooksMapper booksMapper;private SequenceList<Books> books;public void init() {//获取数据库中已有书的数据存入线性表中this.books = new SequenceList<Books>();List<Books> list = booksMapper.list();for (Books book : list) {books.insert(book);}}public String add(Books book) {//TODO 要添加的书的isbn是否已存在与表中//存在for (int i = 0; i < books.length(); i++) {if (book.getIsbn().equals(books.get(i).getIsbn()))return "该图书已存在!";}//不存在books.insert(book);return "已成功添加";}public String delete(Long isbn) {for (int i = 0; i < books.length(); i++) {if (isbn.equals(books.get(i).getIsbn())) {books.remove(i);return "删除成功!";}}return "不存在此书!";}public String find(Long isbn) {for (int i = 0; i < books.length(); i++) {if (isbn.equals(books.get(i).getIsbn())) {return books.get(i).toString();}}return "不存在此书!";}public String update(Books book) {for (int i = 0; i < books.length(); i++) {if (book.getIsbn().equals(books.get(i).getIsbn())) {books.update(i, book);return "修改成功!";}}return "不存在此书!";}public String sort() {for (int i = 0; i < books.length() - 1; i++) {for (int j = 0; j < books.length() - i - 1; j++) {if (books.get(j).getIsbn() > books.get(j + 1).getIsbn()) {Books temp = books.get(j);books.update(j, books.get(j + 1));books.update(j + 1, temp);}}}return "排序成功!";}public String count(){return "已有图书"+books.length()+"个!";}public void show(){books.showAll();}public void end() {//先清空表中数据booksMapper.clear();//在将最新线性表加入数据库for (int i = 0; i < books.length(); i++) {booksMapper.updateDatabase(books.get(i));}}}
  1. utils
public class SequenceList<T>{//创建数组private T[] ListArray;//记录当前元素个数private int N;public SequenceList(int capacity) {//初始化数组this.ListArray = (T[]) new Object[capacity];//初始化长度this.N = 0;}public SequenceList(){//定义默认长度this(10);}public void update(int i, T t){ListArray[i] = t;}public void clear() {this.N = 0;}public boolean isEmpty() {return this.N == 0;}public int length() {return N;}public T get(int i) {return ListArray[i];}public void insert(T t) {//位置不够进行扩容if (N == ListArray.length) {resize(ListArray.length * 2);}ListArray[N++] = t;}public void insert(int i, T t) {if (i<0 || i>N)throw new RuntimeException("插入位置不合法!");//位置不够进行扩容if (N == ListArray.length) {resize(ListArray.length * 2);}//先将i处元素及其后面元素依次向后移动一位for (int index = N - 1; index > i; index--) {ListArray[index] = ListArray[index - 1];}//将添加元素放入i索引处ListArray[i] = t;N++;}public T remove(int i) {if (i<0 || i>N)throw new RuntimeException("删除位置不合法!");T current = ListArray[i];//被删除元素后的每一个元素向前移动一位for (int index = i; index < N - 1; index++) {ListArray[index] = ListArray[index + 1];}N--;if (N > 0 && N < ListArray.length / 4) {resize(ListArray.length / 2);}return current;}//打印当前线性表的元素public void showAll() {for (int i = 0; i < N; i++) {System.out.println(ListArray[i] + " ");}}//改变容量private void resize(int newSize) {//记录旧数组T[] temp = ListArray;//创建新数组ListArray = (T[]) new Object[newSize];//把旧数组中的元素拷贝到新数组for (int i = 0; i < N; i++) {ListArray[i] = temp[i];}}}
  1. 启动类
package com.book;import com.book.pojo.Books;
import com.book.service.BooksService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;import java.util.Scanner;@SpringBootApplication
public class BookSystemApplication {public static void main(String[] args) {ConfigurableApplicationContext run = SpringApplication.run(BookSystemApplication.class, args);BooksService booksService = run.getBean(BooksService.class);System.out.println("--------------图书信息管理系统------------");System.out.println();Scanner sc = new Scanner(System.in);//初始化线性表,将数据库已有信息导入booksService.init();while (true){System.out.println("1.插入    2.删除    3.查找    4.修改    5.排序    6.计数    7.导入    8.保存    9.打印    10.退出");System.out.println();int choice = sc.nextInt();if (choice == 1) {Books book = new Books();System.out.println("请输入书籍isbn:");long isbn = sc.nextLong();book.setIsbn(isbn);System.out.println("请输入书籍名:");String name = sc.next();book.setName(name);System.out.println("请输入作者:");String author = sc.next();book.setAuthor(author);System.out.println("请输入出版社:");String press = sc.next();book.setPress(press);System.out.println("请输入价格");float price = sc.nextFloat();book.setPrice(price);System.out.println(booksService.add(book));}else if (choice == 2) {System.out.println("请输入删除书籍isbn:");Long isbns = sc.nextLong();System.out.println(booksService.delete(isbns));}else if (choice == 3) {System.out.println("请输入查找书籍的isbn:");long isbnss = sc.nextLong();System.out.println(booksService.find(isbnss));}else if (choice == 4) {Books subBook = new Books();System.out.println("请输入要修改书籍的isbn:");long subIsbn = sc.nextLong();subBook.setIsbn(subIsbn);System.out.println("请输入修改后书籍名:");String subName = sc.next();subBook.setName(subName);System.out.println("请输入修改后作者:");String subAuthor = sc.next();subBook.setAuthor(subAuthor);System.out.println("请输入修改后出版社:");String subPress = sc.next();subBook.setPress(subPress);System.out.println("请输入修改后价格:");float subPrice = sc.nextFloat();subBook.setPrice(subPrice);System.out.println(booksService.update(subBook));}else if (choice == 5) {System.out.println(booksService.sort());}else if (choice == 6) {System.out.println(booksService.count());}else if (choice == 7) {booksService.init();System.out.println("已成功导入!");}else if (choice == 8) {booksService.end();System.out.println("已成功保存!");}else if (choice == 9) {booksService.show();}else if (choice == 10){System.out.println("感谢使用本系统!");booksService.end();break;}else {System.out.println("输入不合法!");}}}}

3. 效果


Java实现图书管理系统(基于数据库)相关推荐

  1. 计算机毕设(附源码)JAVA-SSM基于java的图书管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  2. java毕业设计图书管理系统源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计图书管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计图书管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈: 项目 ...

  3. java毕业设计图书管理系统演示录像源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计图书管理系统演示录像源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计图书管理系统演示录像源码+lw文档+mybatis+系统+mysql数据库+调试 本源 ...

  4. 程序逸的Java项目之旅-图书管理系统之数据库设计(2-完)

    紧接上篇博客>>>>>>程序逸的Java项目之旅-图书管理系统之数据库设计(1) 4.数据库表的创建 对于数据库表,我们可以通过cmd窗口进行创建,但那种方法有点麻 ...

  5. Java Web图书管理系统(MVC框架)-包含源码

    Java Web图书管理系统 一.前言 这是大二写的系统,因此这个系统并没有用到很多框架,只是使用了MVC框架,前端使用的是Layui框架.bootstrap框架.JSP技术.JSTL表达式和EL表达 ...

  6. Java Swing图书管理系统桌面软件附源码

    Java Swing图书管理系统桌面软件附源码,亲测可运行. 功能界面如下: 登录界面,默认账号admin密码admin 主功能界面: 添加图书功能界面: 部分源码: 完整源码下载地址: JavaSw ...

  7. 简易的GUI图书管理系统(数据库Mysql)

    简易的GUI图书管理系统(数据库Mysql) 基本的思路就是一个Mysql的连接工具类,然后就是GUI图形界面显示.我这里主要是使用了DefaultTableModel来添加行数据 图片资源:在set ...

  8. Java实现图书管理系统(超详细解析)

    图书管理系统简单实现.图书管理系统基于Java,页面使用jsp实现. 用户进入登录页面,输入账号密码,系统会自动检验账号和密码是否匹配,匹配成功则进入图书管理首页.首页查看图书信息,新增图书信息,删除 ...

  9. 大二小学期java:图书管理系统

    大二小学期java:图书管理系统 import java.util.*;import java.text.*;public class library {public static long char ...

最新文章

  1. matlab下删除文件或文件夹
  2. Java 错误: 找不到或无法加载主类,问题集合
  3. Google Cloud Platform试用期变成只有一天
  4. 关于页面的多种自适应布局——三列布局
  5. CNN/RNN TF1.4
  6. Centos安装JDK(java环境)
  7. linux搭建yum源
  8. UVA10120 ZOJ1229 Gift?!【DFS+BFS】
  9. 【图像分割】基于matlab粒子群优化T熵图像分割【含Matlab源码 286期】
  10. AXure交互设计指南
  11. 关于idea单元测试键盘无法输入的解决方法(终极版)
  12. 2023最新毕业设计选题 -python毕设选题推荐 - 如何选题 避免被坑
  13. 第5章-构建Spring Web应用程序
  14. 完美世界(完美世界(北京)网络技术有限公司)
  15. AndroidProjects个人项目归纳
  16. Cassini Data Rev manufacturer eals Likely Subsurface Ocean on Titan
  17. 高德 面积计算公式 js版
  18. 信息学切题记录:永远的A+B Problem(洛谷P1001)
  19. 最细RGB颜色表,建议收藏
  20. wifi 路由 dns 被劫持 手机 /电脑 打开后弹出一些广告窗口

热门文章

  1. 定义一个Dog类 定义属性名称、年龄 并封装, 定义eat方法 打印狗在进食。 当打印狗对象的时候输出狗的名称和年龄信息.
  2. 通达信MACD红绿柱面积公式,金叉死叉时标注面积
  3. Java String equalsIgnoreCase()方法的功能说明
  4. Ubuntu下Chrome造成系统假死的解决方法
  5. cometoj——C1100 [Contest #8]支援城市
  6. Underwater Photography: Macro 水下摄影:宏观 Lynda课程中文字幕
  7. 优化模型验证关键代码12:if_then_else条件约束的线性化方法及docplex代码实现
  8. mybatis转义符
  9. 阿里云HaaS固件烧录至m5stack的步骤
  10. mac映射网络驱动器访问nas共享文件