案例18 基于Spring Boot+MyBatis的图书信息维护案例

一、案例需求

基于Spring Boot+MyBatis实现图书信息的新增、修改、删除、查询功能,并实现MySQL数据库的操作。

MySQL数据库创建图书表(t_book),图书表有主键、图书名称、图书类别、作者、出版社、简介信息。

二、数据初始化

  • 创建t_book表

create table t_book(id varchar(32),name varchar(50),category varchar(20),author varchar(50),press varchar(50),content varchar(200)   
);
  • 初始化数据

insert into t_book values('1001','西游记','文学名著','吴承恩','人民文学','师徒四人取经');
insert into t_book values('1002','水浒传','文学名著','施耐庵','人民文学','梁山108好汉');

三、代码实现

1. 创建Spring Boot项目

创建Spring Boot项目,项目名称为springboot-book01。

2. 选择依赖

pom文件如下所示:

<dependencies><!--spring boot web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version></dependency><!--mysql--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><!--lombok--><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>
</dependencies>

3. 创建配置文件

resources目录下创建application.yml。

# 配置端口号
server:port: 8090# 配置数据源
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/studentusername: rootpassword: root# 配置MyBatis
mybatis:mapper-locations: classpath*:mapper/**/*Mapper.xmltype-aliases-package: com.wfit

4. 创建Constants常量类

com.wfit.boot.commons目录下创建Constants.java。

public class Constants {// 默认成功码public static final int SUCCESS_CODE = 200;public static final String SUCCESS_MSG = "操作成功";// 默认失败码public static final int ERROR_CODE = 500;public static final String ERROR_MSG = "系统异常";
}

5. 创建Result类

com.wfit.boot.commons目录下创建Result.java。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result<T> {//响应码private int code;//响应消息private String msg;//响应结果private T data;public static <T> Result<T> success(T data){return new Result<>(Constants.SUCCESS_CODE,Constants.SUCCESS_MSG,data);}public static <T> Result<T> error(T data){return new Result<>(Constants.ERROR_CODE,Constants.ERROR_MSG,data);}}

6. 创建Book实体类

com.wfit.boot.model目录下创建Book.java。

@Data
public class Book {private String id;private String name;private String category;private String author;private String press;private String content;}

7. 创建BookController类

com.wfit.boot.controller目录下创建BookController.java。

@RestController     //@Controller和@ResponseBody两个注解的结合
@RequestMapping("/book")
public class BookController {@Autowiredprivate BookService bookService;/*** 新增图书信息*/@PostMapping("/add")    //@RequestMapping(method = {RequestMethod.POST})public Result addBook(@RequestBody Book book){bookService.saveBook(book);return Result.success("新增成功!");}/*** 修改图书信息*/@PostMapping("/update")public Result updateBook(@RequestBody Book book){bookService.updateBook(book);return Result.success("修改成功!");}/*** 删除图书信息*/@GetMapping("/del")  //@RequestMapping(method = {RequestMethod.GET})public Result delBook(String id){bookService.delBook(id);return Result.success("删除成功!");}/*** 查询图书信息*/@GetMapping("/query")public Result queryBook(){List<Book> bookList = bookService.queryBook();return Result.success(bookList);}
}

8. 创建BookService接口

com.wfit.boot.service目录下创建BookService.java。

public interface BookService {public void saveBook(Book book);public void updateBook(Book book);public void delBook(String id);public List<Book> queryBook();}

9. 创建BookServiceImpl类

com.wfit.boot.service.impl目录下创建BookServiceImpl.java。

@Service
public class BookServiceImpl implements BookService {@Resourceprivate BookMapper bookMapper;@Overridepublic void saveBook(Book book) {bookMapper.saveBook(book);}@Overridepublic void updateBook(Book book) {bookMapper.updateBook(book);}@Overridepublic void delBook(String id) {bookMapper.delBook(id);}@Overridepublic List<Book> queryBook() {return bookMapper.queryBook();}
}

10. 创建BookMapper接口

com.wfit.boot.mapper目录下创建BookMapper.java。

@Mapper
public interface BookMapper {public void saveBook(Book book);public void updateBook(Book book);public void delBook(String id);public List<Book> queryBook();
}

11. 创建BookMapper.xml文件

resources.mapper目录下创建BookMapper.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.wfit.boot.mapper.BookMapper"><!--新增图书信息--><insert id="saveBook" parameterType="com.wfit.boot.model.Book">insert into t_book values(#{id},#{name},#{category},#{author},#{press},#{content})</insert><!--修改图书信息--><update id="updateBook" parameterType="com.wfit.boot.model.Book">update t_bookset name = #{name}, category = #{category}where id = #{id}</update><!--删除图书信息--><delete id="delBook" parameterType="java.lang.String">delete from t_book where id = #{id}</delete><!--查询图书信息--><select id="queryBook" resultType="com.wfit.boot.model.Book">select *from t_book</select>
</mapper>

12. 项目结构

四、案例测试

1. 测试新增图书信息

2. 测试修改图书信息

3. 测试删除图书信息

4. 测试查询图书信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/70353.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图片展示 JAVA

利用Java中提供的 ImageIcon类和JLabel类加载与显示电脑路径中的图片&#xff0c;并最终展示在JFrame类窗口中。 代码&#xff1a; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel;public class Main extends JFrame {//继承父类Jframe…

【JavaEE进阶】SpringBoot项目的创建

文章目录 一. SpringBoot简介1. 什么是SpringBoot?2. SpringBoot的优点 二. SpringBoot项目创建1. 使用IDEA创建2. 使用网页创建SpringBoot项目 三. 运行SpringBoot项目 一. SpringBoot简介 1. 什么是SpringBoot? Spring Boot 是一个用于快速构建基于 Spring 框架的应用程序…

7.11 Java方法重写

7.11 Java方法重写 这里首先要确定的是重写跟属性没有关系&#xff0c;重写都是方法的重写&#xff0c;与属性无关 带有关键字Static修饰的方法的重写实例 父类实例 package com.baidu.www.oop.demo05;public class B {public static void test(){System.out.println("这…

SpringBoot案例-部门管理-删除

目录 查看页面原型&#xff0c;明确需求 页面原型 需求 阅读接口文档 思路分析 功能接口开发 控制层&#xff08;Controllre类&#xff09; 业务层&#xff08;Service类&#xff09; 持久层&#xff08;Mapper类&#xff09; 接口测试 前后端联调 查看页面原型&a…

爬虫逆向实战(十七)--某某丁简历登录

一、数据接口分析 主页地址&#xff1a;某某丁简历 1、抓包 通过抓包可以发现数据接口是submit 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现有一个enPassword加密参数 请求头是否加密&#xff1f; 通过查看请求头可以发现有一个To…

FPGA 之 xilinx DDS IP相位控制字及频率控制字浅析

浅析相位环在Xilinx DDS中的理解 本文仅为个人理解之用; 相关仿真结果如下:

Hyper-V增加桥接网络设置(其他方式类同)

点击连接到的服务器&#xff0c;右单击或者右边点击“虚拟交换机管理器” 选择网络种类 配置虚拟交换机信息 外部网络选择物理机网卡设备

NPM与外部服务的集成(上)

目录 1、关于访问令牌 1.1 关于传统令牌 1.2 关于粒度访问令牌 2、创建和查看访问令牌 2.1 创建访问令牌 在网站上创建传统令牌 在网站上创建粒度访问令牌 使用CLI创建令牌 CIDR限制令牌错误 查看访问令牌 在网站上查看令牌 在CLI上查看令牌 令牌属性 1、关于访问令…

设计模式之原型模式Prototype的C++实现

1、原型模式提出 在软件功能设计中&#xff0c;经常面临着“某些结构复杂的对象”的创建工作&#xff0c;且创建的对象想拥有其他对象在某一刻的状态&#xff0c;则可以使用原型模型。原型模型是通过拷贝构造函数来创建对象&#xff0c;并且该对象拥有其他对象在某一刻的状态。…

小程序CSS button按钮自定义高度之后不居中

问题&#xff1a; 按钮设置高度后不居中 <view><button class"btn1" size"">Save</button> </view> page {font-size: 30rpx; }.btn1 {margin-top: 100rpx;height: 190rpx;background: linear-gradient(90deg, #FF8A06, #FF571…

RPA机器人《国网电力》电力行业实施案例-基层减负 提质增效

背景&#xff1a;随着国网战略目标加速落地&#xff0c;数字化转型和精益化管理深化推进&#xff0c;各供电公司亟待突破精细化管控不深入、执行标准不够统一、系统数据不够融通等制约工作质效提升的能力瓶颈&#xff0c;针对这些问题&#xff0c;决定引入诸如RPA、OCR等技术&a…

中国“诺贝尔奖”未来科学大奖公布2023年获奖名单

未来科学大奖委员会于8月16日公布2023年获奖名单。柴继杰、周俭民因发现抗病小体并阐明其结构和在抗植物病虫害中的功能做出的开创性工作获得“生命科学奖”&#xff0c;赵忠贤、陈仙辉因对高温超导材料的突破性发现和对转变温度的系统性提升所做出的开创性贡献获得“物质科学奖…