最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot+Vue+Axios+BootStrap實現(xiàn)圖書的增刪改查功能示例

 更新時間:2021年12月23日 08:37:41   作者:阿標的博客  
本文主要介紹了SpringBoot+Vue+Axios+BootStrap實現(xiàn)圖書的增刪改查功能,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

由于是初學(xué)Vue、Axios,可能在界面和功能上存在著一些問題,但這些并不妨礙使用。如果有對編程感興趣的朋友,可以試著做一做。這個由于是第一次做,不太熟練。在后續(xù)的過程中會不斷的完善。

一、開發(fā)工具

IntelliJ IDEA Ultimate 2021.1

apache-maven-3.5.4

MySQL5.7

JDK 1.8.0_281

二、項目結(jié)構(gòu)

在這里插入圖片描述

三、編寫項目

1、創(chuàng)建數(shù)據(jù)庫

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for books
-- ----------------------------
DROP TABLE IF EXISTS `books`;
CREATE TABLE `books`  (
  `bookId` int(0) NOT NULL AUTO_INCREMENT COMMENT '書id',
  `bookName` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '書名',
  `bookCounts` int(0) NOT NULL COMMENT '數(shù)量',
  `detail` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '描述',
  PRIMARY KEY (`bookId`) USING BTREE,
  INDEX `bookID`(`bookId`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of books
-- ----------------------------
INSERT INTO `books` VALUES (1, 'Java', 1, '從入門到放棄');
INSERT INTO `books` VALUES (2, 'MySQL', 10, '從刪庫到跑路');
INSERT INTO `books` VALUES (3, 'Linux', 5, '從進門到進牢');

SET FOREIGN_KEY_CHECKS = 1;

2、添加依賴

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.0</version>
    </dependency>
    <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>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>bootstrap</artifactId>
        <version>3.4.1</version>
    </dependency>
    <dependency>
        <groupId>org.webjars.bower</groupId>
        <artifactId>jquery</artifactId>
        <version>3.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.webjars.npm</groupId>
        <artifactId>vue</artifactId>
        <version>2.6.14</version>
    </dependency>
    <dependency>
        <groupId>org.webjars.npm</groupId>
        <artifactId>axios</artifactId>
        <version>0.20.0</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.78</version>
    </dependency>
</dependencies>

3、修改項目resources目錄下application.properties

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/ssmbuild?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.pojo

4、在pojo包中編寫實體類

package com.example.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book {
    private Integer bookId;
    private String bookName;
    private Integer bookCounts;
    private String detail;
}

5、在java目錄下的mapper包中編寫接口類

package com.example.mapper;

import com.example.pojo.Book;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface BookMapper {

    List<Book> findAll();

    int addBook(Book book);

    int updateBook(Book book);

    int deleteBook(Integer bookId);

}

6、在resources目錄下的mapper中編寫mapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.BookMapper">

    <resultMap id="bookMap" type="com.example.pojo.Book">
        <id column="bookId" property="bookId" javaType="Integer"/>
        <result column="bookName" property="bookName" javaType="String"/>
        <result column="bookCounts" property="bookCounts" javaType="Integer"/>
        <result column="detail" property="detail" javaType="String"/>
    </resultMap>

    <select id="findAll" resultMap="bookMap">
        select *
        from books
    </select>

    <insert id="addBook" parameterType="com.example.pojo.Book">
        insert into books (bookName, bookCounts, detail)
        values (#{bookName}, #{bookCounts}, #{detail});
    </insert>

    <update id="updateBook" parameterType="com.example.pojo.Book">
        update books
        set bookName=#{bookName},
            bookCounts=#{bookCounts},
            detail=#{detail}
        where bookId = #{bookId}
    </update>

    <delete id="deleteBook" parameterType="Integer">
        delete
        from books
        where bookId = #{bookId}
    </delete>

</mapper>

7、在service包中編寫接口

package com.example.service;

import com.example.pojo.Book;
import com.example.vo.ResultVO;
import java.util.List;

public interface BookService {

    List<Book> findAll();

    ResultVO addBook(Book book);

    ResultVO updateBook(Book book);

    int deleteBook(Integer bookId);
}

8、在service包下的impl包中編寫接口的實現(xiàn)類

package com.example.service.impl;

import com.example.mapper.BookMapper;
import com.example.pojo.Book;
import com.example.service.BookService;
import com.example.vo.ResultVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;

@Service
public class BookServiceImpl implements BookService {

    @Resource
    private BookMapper bookMapper;

    @Override
    public List<Book> findAll() {
        return bookMapper.findAll();
    }

    @Override
    public ResultVO addBook(Book book) {
        int i = bookMapper.addBook(book);
        if (i==1){
            return new ResultVO(10000,"success");
        }else {
            return new ResultVO(10001,"defeat");
        }
    }


    @Override
    public ResultVO updateBook(Book book) {
        int i = bookMapper.updateBook(book);
        if (i==1){
            return new ResultVO(10000,"success");
        }else {
            return new ResultVO(10001,"defeat");
        }
    }

    @Override
    public int deleteBook(Integer bookId) {
        return bookMapper.deleteBook(bookId);
    }

}

9、在controller包中編寫控制層實現(xiàn)的方法

package com.example.controller;

import com.example.pojo.Book;
import com.example.service.BookService;
import com.example.vo.ResultVO;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;

@Controller
public class BookController {

    @Resource
    private BookService bookService;

    @RequestMapping("/bookAll")
    @ResponseBody
    public List<Book> bookAll(){
        List<Book> bookList = bookService.findAll();
        return bookList;
    }

    @PostMapping("/bookAdd")
    @ResponseBody
    public ResultVO addBook(@RequestBody Book book){
        ResultVO resultVO = bookService.addBook(book);
        return resultVO;
    }

    @PostMapping("/bookUpdate")
    @ResponseBody
    public ResultVO updateBook(@RequestBody Book book){
        return bookService.updateBook(book);
    }

    @GetMapping("/bookDelete/{bookId}")
    @ResponseBody
    public int deleteBook(@PathVariable("bookId") Integer bookId){
        return bookService.deleteBook(bookId);
    }

}

10、在vo包中編寫ResultVo

package com.example.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResultVO {

    //響應(yīng)碼
    private int code;

    //提示消息
    private String msg;

    //響應(yīng)數(shù)據(jù)
    private Object data;

    public ResultVO(int code,String msg){
        this.code=code;
        this.msg=msg;
    }
}

11、在webapp下創(chuàng)建list.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>書籍列表</title>
    <!--1. 添加vue依賴-->
    <script src="/webjars/vue/2.6.14/dist/vue.min.js"></script>
    <!--2. 添加axios依賴-->
    <script src="/webjars/axios/0.20.0/dist/axios.min.js"></script>
    <!--3. 添加jquery依賴-->
    <script src="/webjars/jquery/3.6.0/dist/jquery.min.js"></script>
    <!--4. 添加bootstrap依賴-->
    <link rel="stylesheet" href="/webjars/bootstrap/3.4.1/css/bootstrap.min.css">
    <script src="/webjars/bootstrap/3.4.1/js/bootstrap.min.js"></script>
    <style>
        .table {
            text-align: center;
        }
    </style>
</head>
<body>
<div class="container">
    <div class="panel panel-primary">
        <div class="panel-heading">
            <div class="panel-title">
                <h3>書籍列表(SpringBoot+ Vue + Axios + BootStrap)</h3>
            </div>
        </div>
        <table class="table table-striped table-hover">
            <tr>
                <td>書籍編號</td>
                <td>書籍名稱</td>
                <td>書籍?dāng)?shù)量</td>
                <td>書籍描述</td>
                <td>操作</td>
            </tr>
            <tr v-for="bk in bookList">
                <td>{{bk.bookId}}</td>
                <td>{{bk.bookName}}</td>
                <td>{{bk.bookCounts}}</td>
                <td>{{bk.detail}}</td>
                <td>
                    <a href="#" class="btn btn-success btn-sm" data-toggle="modal" data-target="#myModal"
                       @click="book=bk;title='修改書籍'">修改</a>
                    <a href="" class="btn btn-danger btn-sm" @click="delBook(bk.bookId)">刪除</a>
                </td>
            </tr>
        </table>
        <div class="panel-footer text-right">
            <a href="#" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal"
               @click="book={};title='添加書籍'">添加書籍</a>
        </div>

        <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
                                aria-hidden="true">&times;</span></button>
                        <h4 class="modal-title">{{title}}</h4>
                        --{{book}}
                    </div>
                    <div class="modal-body">
                        <form class="form-horizontal" method="post">
                            <input type="hidden" v-model="book.bookId">
                            <div class="form-group">
                                <label class="col-sm-2 control-label">書籍名稱:</label>
                                <div class="col-sm-10">
                                    <input type="text" class="form-control" v-model="book.bookName" placeholder="書籍名稱">
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-sm-2 control-label">書籍?dāng)?shù)量:</label>
                                <div class="col-sm-10">
                                    <input type="text" class="form-control" v-model="book.bookCounts" placeholder="書籍?dāng)?shù)量">
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-sm-2 control-label">書籍描述:</label>
                                <div class="col-sm-10">
                                    <input type="text" class="form-control" v-model="book.detail" placeholder="書籍描述">
                                </div>
                            </div>
                        </form>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-default" data-dismiss="modal">關(guān)閉(C)</button>
                        <button type="button" class="btn btn-primary" @click="save()">保存(S)</button>
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>
</body>
</html>
<script>
    let vs = new Vue({
        el: '.container',
        data: {
            bookList: [],
            book: {},
            title: '添加書籍',
        },
        created() {
            //查詢所有圖書信息
            this.findAllBooks();
        },
        methods: {
            //1、查詢?nèi)繄D書信息
            findAllBooks() {
                axios.get("/bookAll").then(data => {
                    this.bookList = data.data
                })
            },
            //2、保存圖書
            save() {
                //根據(jù)bkl.bookId是否有值,決定添加還是修改
                let url = "/bookAdd";
                if (this.book.bookId) {
                    url = "/bookUpdate";
                }
                //向后臺發(fā)送請求
                axios({
                    method:'post',
                    url:url,
                    data:JSON.stringify(this.book),
                    headers:{
                        'Content-type':'application/json'
                    }
                }).then(res=>{
                    if (res.data.code==10000){
                        this.findAllBooks();
                    }
                    $("#myModal").modal('hide');
                })
            },
            //3、刪除書籍
            delBook(bookId) {
                let url = "/bookDelete/"+bookId;
                if (confirm("你確定要刪除嗎?")) {
                    axios.get(url).then(function (res){
                        if (res.data.code===10000){
                            this.findAllBooks();
                        }
                    })
                }
            }
        }
    })
</script>

四、運行項目

訪問地址:

http://localhost:8080/list.html

展示頁:

在這里插入圖片描述

添加頁面:

在這里插入圖片描述

修改頁:

在這里插入圖片描述

到此這篇關(guān)于SpringBoot+Vue+Axios+BootStrap實現(xiàn)圖書的增刪改查功能示例的文章就介紹到這了,更多相關(guān)SpringBoot 增刪改查內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java設(shè)計模式之java責(zé)任鏈模式詳解

    Java設(shè)計模式之java責(zé)任鏈模式詳解

    這篇文章主要介紹了JAVA 責(zé)任鏈模式的的相關(guān)資料,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2021-09-09
  • 簡單了解Spring Web相關(guān)模塊運行原理

    簡單了解Spring Web相關(guān)模塊運行原理

    這篇文章主要介紹了簡單了解Spring Web相關(guān)模塊運行原理,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • JAVA調(diào)用JavaScript的方法示例

    JAVA調(diào)用JavaScript的方法示例

    本文主要介紹了JAVA調(diào)用JavaScript的方法示例,主要介紹了兩種方式,一種是使用Java的ScriptEngine接口,另一種是使用Java的URLConnection類來獲取JS文件,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • java解一個比較特殊的數(shù)組合并題

    java解一個比較特殊的數(shù)組合并題

    這篇文章主要介紹了java解一個比較特殊的數(shù)組合并題,需要的朋友可以參考下
    2014-06-06
  • springboot使用swagger-ui 2.10.5 有關(guān)版本更新帶來的問題小結(jié)

    springboot使用swagger-ui 2.10.5 有關(guān)版本更新帶來的問題小結(jié)

    這篇文章主要介紹了springboot使用swagger-ui 2.10.5 有關(guān)版本更新帶來的問題小結(jié),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢操作

    Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢操作

    Nebula?Graph?是一款開源的、分布式的、易擴展的原生圖數(shù)據(jù)庫,能夠承載包含數(shù)千億個點和數(shù)萬億條邊的超大規(guī)模數(shù)據(jù)集,并且提供毫秒級查詢,這篇文章主要介紹了Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢,需要的朋友可以參考下
    2022-10-10
  • Java單鏈表反轉(zhuǎn)圖文教程

    Java單鏈表反轉(zhuǎn)圖文教程

    這篇文章主要給大家介紹了關(guān)于Java單鏈表反轉(zhuǎn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Java 利用棧來反轉(zhuǎn)鏈表和排序的操作

    Java 利用棧來反轉(zhuǎn)鏈表和排序的操作

    這篇文章主要介紹了Java 利用棧來反轉(zhuǎn)鏈表和排序的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 新手了解java 類,對象以及封裝基礎(chǔ)知識

    新手了解java 類,對象以及封裝基礎(chǔ)知識

    JS是一門面向?qū)ο笳Z言,其對象是用prototype屬性來模擬的,本文介紹了如何封裝JS對象,具有一定的參考價值,下面跟著小編一起來看下吧,希望對你有所幫助
    2021-07-07
  • 解決Elasticsearch因jdk版本問題啟動失敗的問題

    解決Elasticsearch因jdk版本問題啟動失敗的問題

    這篇文章主要介紹了解決Elasticsearch因jdk版本問題啟動失敗的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論

道孚县| 天镇县| 镇赉县| 民权县| 新沂市| 印江| 十堰市| 寻甸| 宣城市| 莱州市| 福贡县| 景东| 大洼县| 黑河市| 无棣县| 封丘县| 钟山县| 郁南县| 麻栗坡县| 北川| 尉犁县| 湟源县| 敦煌市| 蓬溪县| 高陵县| 上高县| 赣州市| 唐山市| 石柱| 安新县| 长顺县| 肥城市| 徐水县| 余干县| 浮山县| 连州市| 隆化县| 恩施市| 天长市| 巴南区| 财经|