Java图书目录管理系统CRUD展示(springboot+vue+mybatis-plus)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Java图书目录管理系统CRUD展示(springboot+vue+mybatis-plus)

Java图书管理系统CRUD展示

简介

这篇文章是针对一个c++的编程题,进行的java的改变,然后在那个基础之上加上了一个网页的前端,主要的参考文章是这两篇,看完之后,就会发现,其实这个,大部分项目都是图书管理系统的简单变化而成的。

图书目录管理系统(C++)

springboot+vue+mybatis-plus+axios实现商品的CRUD

项目展示

项目创建部分

数据库编码

/*
 Navicat MySQL Data Transfer
 Source Server         : localhost_3306
 Source Server Type    : MySQL
 Source Server Version : 80028
 Source Host           : localhost:3306
 Source Schema         : projectdatabase
 Target Server Type    : MySQL
 Target Server Version : 80028
 File Encoding         : 65001
 Date: 31/01/2023 22:24:02
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book`  (
  `isbn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `author` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `publisher` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `pubdate` datetime NOT NULL,
  `price` decimal(10, 2) NOT NULL,
  `id` int NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`, `isbn`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES ('9780439227148', 'The Call of the Wild', 'Jack London', 'Scholastic Press', '2001-01-01 00:00:00', 39.40, 1);
INSERT INTO `book` VALUES ('9787501592401', 'The Old Man and the Sea', 'Ernest Hemingway', 'Knowledge Press', '2023-01-30 00:00:00', 25.80, 2);
INSERT INTO `book` VALUES ('9787501592401', 'The Old Man and the Sea', 'Ernest Hemingway', 'Knowledge Press', '2023-01-31 13:02:42', 25.80, 3);
INSERT INTO `book` VALUES ('9780439227148', 'The Call of the Wild', 'Jack London', 'Scholastic Press', '2023-01-30 16:00:00', 34.90, 6);
INSERT INTO `book` VALUES ('9781772262902', 'Oliver Twist', 'Charles Dickens', 'Engage Books', '2023-01-03 16:00:00', 45.00, 7);
SET FOREIGN_KEY_CHECKS = 1;

项目编码

在创建项目的那些地方,在springboot+vue+mybatis-plus+axios实现商品的CRUD这篇文章里面,已经写好了,怎么创建一个springboot项目可以参考这篇文章。

这个题的原题是这样的,是一个C++的期末考试题目。

图书目录管理系统(C++)

原题描述

请设计一个简单的图书目录管理系统(初级版)。

图书目录信息包括:

统一书号(不超过13字符)

书名(不超过30字符)

作者(不超过20字符)

出版社(不超过30字符)

出版日期(包括:年、月、日)

价格(精确到分)

注意:为了保证运行窗口能正确地显示,请右击运行窗口,修改“属性”:

在“选项”选项卡中,选中“使用旧版本控制台”

在“字体”选项卡中,选择“8×16”“点阵字体”

在“布局”选项卡中,将屏幕窗口宽度均设为“120”。

具体需求如下:

显示如下的主菜单:

Append Find Remove Modify Show Quit > _

如果用户输入 A 或 a、F 或 f、R 或 r、M 或 m、S 或 s,则可完成相应的操作。如果用户输入其它字符,则显示错误信息。

程序将反复显示主菜单,让用户持续工作。如果用户输入 Q 或 q,则程序结束。

Append Find Remove Modify Show Quit > Q
Thank you! Goodbye!

若用户输入其它字符,则显示错误信息。

Append Find Remove Modify Show Quit > B
Incorrect choice!
Append Find Remove Modify Show Quit > 9
Incorrect choice!
Append Find Remove Modify Show Quit > +
Incorrect choice!

若用户输入 A 或 a,则可以输入新书的信息,将其添加到图书目录中。

Append Find Remove Modify Show Quit > a
     ISBN: 9780439227148
    Title: The Call of the Wild
   Author: Jack London
Publisher: Scholastic Press
 Pub date: 2001/1/1
    Price: 39.4
Append Find Remove Modify Show Quit > A
     ISBN: 9781772262902
    Title: Oliver Twist
   Author: Charles Dickens
Publisher: Engage Books
 Pub date: 2016/9/15
    Price: 648
Append Find Remove Modify Show Quit > a
     ISBN: 9787515911076
    Title: The Call of the Wild
   Author: Jack London
Publisher: Aerospace Publishing House
 Pub date: 2016/5/1
    Price: 29.8

若用户输入的日期信息不正确,则显示错误信息,并要求用户重新输入。

Append Find Remove Modify Show Quit > A
     ISBN: 9787501592401
    Title: The Old Man and the Sea
   Author: Ernest Hemingway
Publisher: Knowledge Press
 Pub date: 2016/2/30
Incorrect date! Please reenter: 2016/6/31
Incorrect date! Please reenter: 2016/8/1
    Price: 25.8

若用户输入 S 或 s,则按书号升序排序,然后列表显示全部图书。

Append Find Remove Modify Show Quit > S
ISBN--------- Title------------------------- Author-------------- Publisher--------------------- Pub-date-- Price---
9780439227148 The Call of the Wild           Jack London          Scholastic Press               2001/01/01    39.40
9781772262902 Oliver Twist                   Charles Dickens      Engage Books                   2016/09/15   648.00
9787501592401 The Old Man and the Sea        Ernest Hemingway     Knowledge Press                2016/08/01    25.80
9787515911076 The Call of the Wild           Jack London          Aerospace Publishing House     2016/05/01    29.80

若用户输入 F 或 f,则输入书名,然后显示该书名的图书。如果没有对应的图书,则显示错误信息。

Append Find Remove Modify Show Quit > F
Title: The Call of the Wild
ISBN--------- Title------------------------- Author-------------- Publisher--------------------- Pub-date-- Price---
9780439227148 The Call of the Wild           Jack London          Scholastic Press               2001/01/01    39.40
9787515911076 The Call of the Wild           Jack London          Aerospace Publishing House     2016/05/01    29.80
Append Find Remove Modify Show Quit > f
Title: Gulliver's Travels
Not found!

说明:输出查找结果时,不作排序操作。

若用户输入 R 或 r,则输入书号,然后将删除该书号的图书。如果没有对应的图书,则显示错误信息。

Append Find Remove Modify Show Quit > r
ISBN: 9781772262902
Remove(y/n)? n
Append Find Remove Modify Show Quit > S
ISBN--------- Title------------------------- Author-------------- Publisher--------------------- Pub-date-- Price---
9780439227148 The Call of the Wild           Jack London          Scholastic Press               2001/01/01    39.40
9781772262902 Oliver Twist                   Charles Dickens      Engage Books                   2016/09/15   648.00
9787501592401 The Old Man and the Sea        Ernest Hemingway     Knowledge Press                2016/08/01    25.80
9787515911076 The Call of the Wild           Jack London          Aerospace Publishing House     2016/05/01    29.80
Append Find Remove Modify Show Quit > R
ISBN: 9780439227148
Remove(y/n)? Y
Append Find Remove Modify Show Quit > s
ISBN--------- Title------------------------- Author-------------- Publisher--------------------- Pub-date-- Price---
9781772262902 Oliver Twist                   Charles Dickens      Engage Books                   2016/09/15   648.00
9787501592401 The Old Man and the Sea        Ernest Hemingway     Knowledge Press                2016/08/01    25.80
9787515911076 The Call of the Wild           Jack London          Aerospace Publishing House     2016/05/01    29.80
Append Find Remove Modify Show Quit > r
ISBN: 9787515914145
Not found!
Append Find Remove Modify Show Quit > s
ISBN--------- Title------------------------- Author-------------- Publisher--------------------- Pub-date-- Price---
9781772262902 Oliver Twist                   Charles Dickens      Engage Books                   2016/09/15   648.00
9787501592401 The Old Man and the Sea        Ernest Hemingway     Knowledge Press                2016/08/01    25.80
9787515911076 The Call of the Wild           Jack London          Aerospace Publishing House     2016/05/01    29.80

要求:用户回答是否删除时,必须回答 Y 或 N (大小写均可)。如果是其它字符,则显示错误信息,要求用户重新回答。

Append Find Remove Modify Show Quit > R
ISBN: 9781772262902
Remove(y/n)? k
Incorrect answer!
Remove(y/n)? $
Incorrect answer!
Remove(y/n)? N

若用户输入 M 或 m,则可以修改图书信息。首先按书号查找,然后重新输入该图书的信息。

Append Find Remove Modify Show Quit > m
ISBN: 9787515911076
Modify(y/n)? y
     ISBN: 9787544724968
    Title: The House on Mango Street
   Author: Sandra Heathneros
Publisher: Yilin Press
 Pub date: 2012/1/1
    Price: 30
Append Find Remove Modify Show Quit > M
ISBN: 9787501592401
Modify(y/n)? n
Append Find Remove Modify Show Quit > m
ISBN: 9787515914145
Not found!
Append Find Remove Modify Show Quit > S
ISBN--------- Title------------------------- Author-------------- Publisher--------------------- Pub-date-- Price---
9781772262902 Oliver Twist                   Charles Dickens      Engage Books                   2016/09/15   648.00
9787501592401 The Old Man and the Sea        Ernest Hemingway     Knowledge Press                2016/08/01    25.80
9787544724968 The House on Mango Street      Sandra Heathneros    Yilin Press                    2012/01/01    30.00

要求:用户回答是否修改时,必须回答 Y 或 N (大小写均可)。如果是其它字符,则显示错误信息,要求用户重新回答。

Append Find Remove Modify Show Quit > M
ISBN: 9787544724968
Modify(y/n)? K
Incorrect answer!
Modify(y/n)? *
Incorrect answer!
Modify(y/n)? n

相关习题:图书目录管理系统(高级版)。

Append Find Remove Modify Show Quit > Thank you! Goodbye!
q

完整代码

项目结构

application.yml

server:
  port: 8080
spring:
  datasource:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/projectdatabase?serverTimezone=UTC
      username: root
      password: 123456
mybatis-plus:
  global-config:
    db-config:
      id-type: auto
#  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.7</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>SpringBootCRUD</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>SpringBootCRUD</name>
    <description>SpringBootCRUD</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.62</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

前端文件

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <a href="/add"><input type="button" value="新增"></a><br>
    <hr>
    <table id="brandTable" border="1" cellspacing="0" width="100%">
        <tr>
            <th>序号</th>
            <th>统一书号</th>
            <th>书名</th>
            <th>作者</th>
            <th>出版社</th>
            <th>出版日期</th>
            <th>价格</th>
        </tr>
        <!--
            使用v-for遍历tr
        -->
        <tr v-for="(book,i) in books" align="center" >
            <td>{{i + 1}}</td>
            <td>{{book.isbn}}</td>
            <td>{{book.title}}</td>
            <td>{{book.author}}</td>
            <td>{{book.publisher}}</td>
            <td>{{book.date2}}</td>
            <td>{{book.price}}</td>
            <td><input type="button" id="update" @click="updateId(book.id)" value="修改"> <input type="button" id="delete" @click="deleteId(book.id)" value="删除"></td>
        </tr>
    </table>
</div>
<script src="js/axios-0.18.0.js"></script>
<script src="js/vue.js"></script>
</body>
<script>
    new Vue({
        el:"#app", // 这里写那个上面网页的div的id名称
        data(){
            return{
                books:[]
            }
        },
        mounted(){ // 当网页加载的时候加载
            let _this = this; // 制作一个临时的this指针
            axios({
                method:"get",
                url:"http://localhost:8080/selectAll"
            }).then(function (response){
                console.log(response.data)
                _this.books = response.data;
            })
        },
        methods: {
            updateId(id){
                let _this = this;
                axios({
                    method:"get",
                    url:"http://localhost:8080/update?id"+id,
                    data:id
                }).then(resp=>{
                    location.href = "http://localhost:8080/update"
                })
            },
            deleteId(id) {
                let _this = this;
                axios({
                    method:"post",
                    url:"http://localhost:8080/delete",
                    data:id
                }).then(resp=>{
                    if (resp.data){
                        location.href = "http://localhost:8080/"
                    } else {
                        alert("删除失败")
                    }
                })
            }
        }
    })
</script>
</html>
addBook.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加书本</title>
</head>
<body>
<div id="app">
    <h3>添加书本</h3>
    <form action="" method="post">
        统一书号:<input id="isbn" v-model="book.isbn" name="isbn"><br>
        书名:<input id="title" v-model="book.title" name="title"><br>
        作者:<input id="author" v-model="book.author" name="author"><br>
        出版社:<input id="publisher" v-model="book.publisher" name="publisher"><br>
        出版日期:<input id="pubdate" v-model="book.pubdate" name="pubdate" type="date"><br>
        价格:<input id="price" v-model="book.price" name="price"><br>
        <!--        <input type="button" id="btn" @click="submitForm" value="提交">-->
        <input type="button" id="btn" @click="submitForm" value="提交">
    </form>
</div>
<script src="js/axios-0.18.0.js"></script>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el:"#app",
        data() {
            return{
                book:{
                }
            }
        },
        methods:{
            submitForm() {
                var _this = this;
                axios({
                    method: "post",
                    url:"http://localhost:8080/addBook",
                    data:_this.book
                }).then(function (response) {
                    if (response.data){ // 添加成功之后返回原来的页面
                        location.href="http://localhost:8080/";
                    } else {
                        alert("添加失败")
                    }
                })
            }
        }
    })
</script>
</body>
</html>
updateBook.html
<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>更新书本</title>
    </head>
    <body>
    <div id="app">
        <h3>更新书本</h3>
        <form action="" method="post">
            统一书号:<input id="isbn" v-model="book.isbn" name="isbn"><br>
            书名:<input id="title" v-model="book.title" name="title"><br>
            作者:<input id="author" v-model="book.author" name="author"><br>
            出版社:<input id="publisher" v-model="book.publisher" name="publisher"><br>
            出版日期:<input id="pubdate" v-model="book.pubdate" name="pubdate" type="date"><br>
            价格:<input id="price" v-model="book.price" name="price"><br>
            <!--        <input type="button" id="btn" @click="submitForm" value="提交">-->
            <input type="button" id="btn" @click="submitForm" value="提交">
        </form>
    </div>
    <script src="js/axios-0.18.0.js"></script>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el:"#app",
            data() {
                return{
                    book:{
                    }
                }
            },
            methods:{
                submitForm() {
                    var _this = this;
                    axios({
                        method: "post",
                        url:"http://localhost:8080/addBook",
                        data:_this.book
                    }).then(function (response) {
                        if (response.data){ // 添加成功之后返回原来的页面
                            location.href="http://localhost:8080/";
                        } else{
                            alert("添加失败");
                        }
                    })
                }
            }
        })
    </script>
    </body>
    </html>

后端部分

Book
package com.example.springbootcrud.Bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book {
    // 数据id
    private Integer id;
    // 图书编号
    private String isbn;
    // 图书名
    private String title;
    // 图书作者
    private String author;
    // 图书出版社
    private String publisher;
    // 图书出版日期
    private Date pubdate;
    // 只有年份的日期字符串
//    private  HashMap<String, Integer>map = new HashMap<String, Integer>(){
//        {
//            put("Jan", 1);
//            put("Feb", 2);
//            put("Mar", 3);
//            put("Apr", 4);
//            put("May", 5);
//            put("Jun", 6);
//            put("Jul", 7);
//            put("Aug", 8);
//            put("Sept", 9);
//            put("Oct", 10);
//            put("Nov", 11);
//            put("Dec", 12);
//        }
//    };
    public String getDate2(){
        HashMap<String, Integer>map = new HashMap<String, Integer>(){
            {
                put("Jan", 1);
                put("Feb", 2);
                put("Mar", 3);
                put("Apr", 4);
                put("May", 5);
                put("Jun", 6);
                put("Jul", 7);
                put("Aug", 8);
                put("Sept", 9);
                put("Oct", 10);
                put("Nov", 11);
                put("Dec", 12);
            }
        };
        String strs[] = pubdate.toString().split(" ");
//        for (int i = 0; i < strs.length; ++ i){
//            System.out.println(strs[i]);
//        }
        String date = strs[5] + "年" + map.get(strs[1]) + "月" + strs[2] + "日";
        System.out.println(date);
        return date;
    }
    // 图书出版价格
    private Double price;
}
BookController
package com.example.springbootcrud.Controller;
import com.alibaba.fastjson.JSON;
import com.example.springbootcrud.Bean.Book;
import com.example.springbootcrud.Dao.BookDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.List;
@Controller
public class BookController {
    @Autowired
    BookDao bookDao;
    @RequestMapping("/") // 设置默认页面
    public String index(){
        return "index.html";
    }
    @RequestMapping("/add")
    public String add(){
        return "addBook.html";
    }
    @RequestMapping("/update")
    public String update(){
        return "updateBook.html";
    }
    @ResponseBody
    @GetMapping("/selectAll")
    public List<Book> selectAll(){
        System.out.println(bookDao.selectList(null).toString());
        return bookDao.selectList(null);
    }
    @RequestMapping("/addBook")
    @ResponseBody
    public String addBook(HttpServletRequest request)throws ServletException, IOException {
        BufferedReader reader = request.getReader();
        String params = reader.readLine();
        Book book = JSON.parseObject(params, Book.class);
        System.out.println(book);
        bookDao.insert(book);
        return "success";
    }
    @RequestMapping("/updateId")
    @ResponseBody
    public Boolean updateBook(HttpServletRequest request)throws ServletException, IOException{
        BufferedReader reader = request.getReader();
        String params = reader.readLine();
        Book book = JSON.parseObject(params, Book.class);
        System.out.println(book);
        if (bookDao.updateById(book) > 0) return true;
        return false;
    }
    @RequestMapping("/delete")
    @ResponseBody
    public Boolean deleteBook(HttpServletRequest request)throws ServletException, IOException{
        BufferedReader reader = request.getReader();
        String params = reader.readLine();
        System.out.println(params);
        if (bookDao.deleteById(Integer.parseInt(params)) > 0) return true;
        return false;
    }
}
BookDao
package com.example.springbootcrud.Dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.springbootcrud.Bean.Book;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface BookDao extends BaseMapper<Book> {
}

测试类

BookDaoTestCase
package com.example.springbootcrud.Dao;
import com.example.springbootcrud.Bean.Book;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Date;
@SpringBootTest
public class BookDaoTestCase {
    @Autowired
    private BookDao bookDao;
    @Test
    void testSelectAll(){
        System.out.println(bookDao.selectList(null));
    }
    @Test
    void testSave(){
        Book book = new Book();
        book.setIsbn("9787515911076");
        book.setTitle("The Call of the Wild");
        book.setAuthor("Jack London");
        book.setPublisher("Aerospace Publishing House");
        book.setPubdate(new Date());
        book.setPrice(360.00);
        System.out.println(book);
        bookDao.insert(book);
    }
    @Test
    void testUpdate(){
        Book book = new Book();
        book.setId(3);
        book.setIsbn("9787501592401");
        book.setTitle("The Old Man and the Sea");
        book.setAuthor("Ernest Hemingway");
        book.setPublisher("Knowledge Press");
        book.setPubdate(new Date());
        book.setPrice(25.8);
        bookDao.updateById(book);
    }
    @Test
    void testDelete(){
        bookDao.deleteById(5);
    }
    @Test
    void testDate(){
    }
}


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
监控 Java API
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
|
26天前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
1月前
|
运维 自然语言处理 供应链
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
98 3
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
41 1
|
1月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
前端开发 druid Java
SpringBoot 整合 MyBatis
文本是基于MVC前后端分离模式的一个SpringBoot整合MyBatis的项目,不过没有用到前端页面,使用了更方便的Apifox请求工具。SpringBoot+MyBatis使用起来更方便,更舒服。掌握SpingBoot整合MyBatis,要比Spring整合简单的多,少了很多繁琐的配置。......
226 0
SpringBoot 整合 MyBatis
|
XML 数据可视化 Java
Springboot整合mybatis(注解而且能看明白版本)
这篇文章主要讲解Springboot整合Mybatis实现一个最基本的增删改查功能,整合的方式有两种一种是注解形式的,也就是没有Mapper.xml文件,还有一种是XML形式的,我推荐的是使用注解形式,为什么呢?因为更加的简介,减少不必要的错误。
591 0
Springboot整合mybatis(注解而且能看明白版本)
|
XML 存储 SQL
SpringBoot整合MyBatis
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
1417 1
SpringBoot整合MyBatis
|
XML SQL Java
SpringBoot整合MyBatis(七)下
SpringBoot整合MyBatis(七)
137 0
SpringBoot整合MyBatis(七)下
|
XML Java 数据库连接
SpringBoot整合MyBatis(七)中
SpringBoot整合MyBatis(七)
159 0
SpringBoot整合MyBatis(七)中