案例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.Driver
    url: jdbc:mysql://localhost:3306/student
    username: root
    password: root

# 配置MyBatis
mybatis:
  mapper-locations: classpath*:mapper/**/*Mapper.xml
  type-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 {

    @Autowired
    private 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 {

    @Resource
    private BookMapper bookMapper;

    @Override
    public void saveBook(Book book) {
        bookMapper.saveBook(book);
    }

    @Override
    public void updateBook(Book book) {
        bookMapper.updateBook(book);
    }

    @Override
    public void delBook(String id) {
        bookMapper.delBook(id);
    }

    @Override
    public 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_book
        set 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. 测试查询图书信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田园Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值