SpringBoot从安装到实战(五)图书管理系统-利用Spring Data自动建表以及完成增删改查

前言

SpringBoot从安装到实战(四)用图书管理系统来小试牛刀–前置工作
在上一篇文章中,我们已经做好了相关的前置准备工作,现在让我们来开始建表吧!

相信很多读者在以往的项目开发中,对于建表这一环节是十分苦恼,不过幸运的是,spring data 内置了hibernate的相关依赖,让我们可以像创建类文件一样创建数据库表。同时,spring data还能帮我们自动完成对增删改查的实现,大大节约了开发成本。

废话不多说,让我们立刻开始开发吧!

创建实体类

zyd.entity包下创建一个名为Book的bean类

**
 * <p>
 * Title: Book
 * </p>
 * <p>
 * Description: 书本实体类
 * </p>
 * @author zyd
 * <p>
 * 创建日期:2020年4月11日
 * </p>
 */
@Entity
public class Book {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private long id;
  private String bookName;
  private String author;
  private long quantity;

  public Book() {}
  public Book(String bookName,String author,long quantity) {
    setBookName(bookName);
    setAuthor(author);
    setQuantity(quantity);
  }
  public String getBookName() {
    return bookName;
  }
//...省略setter
//...省略getter
 

细心的读者会发现,这个book类出现了有一些新的注释

注释解释

注释作用
@Entity表明这个类是一个实体类,将会自动按照类名创建数据库表
@Id标明实体类的主键
@GeneratedValue(strategy = GenerationType.AUTO)标明主键生成策略为自增(AUTO)

运行项目

创建完成后让我们来运行一下项目
就会发现hibernate已经自动为我们创建好相应的数据库表啦!
在这里插入图片描述

创建Dao接口

成功创建数据库表后,我们还得去实现数据库表的增删改查
zyd.dao包内创建一个名为BookDao的接口

import org.springframework.data.jpa.repository.JpaRepository;
import zyd.entity.Book;

/**
 * <p>
 * Title: BookDao
 * </p>
 * <p>
 * Description: 书本实体类Dao
 * </p>
 * @author zyd
 * <p>
 * 创建日期:2020年4月11日
 * </p>
 */
public interface BookDao extends JpaRepository<Book, Long> {

}

这样我们就实现了书本实体类的增删改查了!

读者:???
没错!这就是spring data 的魔力所在
我们仅需要创建一个接口并继承相应接口,便完成了对增删改查的支持

接口

除了文中提到的JpaRepository,还有其他的接口可以继承使用,可根据具体需求继承不同接口

CrudRepository自动实现单表的增删改查
PagingAndSortingRepository继承CrudRepository,同时提供分页和排序方法
JpaRepository继承PagingAndSortingRepository

你也可以在接口里面写自定义方法,只需要按照特定语法编写函数,springdata便会根据函数名猜测你要实现的功能并自动实现

假如你想实现根据作者返回作者的所有书本,你可以这样写:

public interface BookDao extends JpaRepository<Book, Long> {
    Iterable<Book>getBooksByAuthor(String author);
}

自定义jpa的语法分析

Iterable<Book>getBooksByAuthor(String author);

以这个来分析
我们将函数名分割开来
get/Books/by/Author
最前面的动词标明你要做某些事情(增删改查)
by后面表示你要根据by后面的名词来实现某个动作

在这里作者简单列出常用的操作符

  • get add update delete
  • And By Between OrderBy
  • Equals IsNot
  • IsAfter IsBefore
  • IgnoringCase
  • IsGreaterThan IsLessThan
  • IsNull IsNotNull IsTrue IsFalse
  • IsContaining IsLike IsNotLike

测试

完成接口开发后我们来测试一下接口能否正常运行
在test/java目录下创建zyd.dao包,并新建一个BookDaoTest类

import org.junit.jupiter.api.*;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import zyd.entity.Book;

@SpringBootTest
@ExtendWith(SpringExtension.class)
public class BookDaoTest {

  @Autowired
  private BookDao bookDao;
  
  @Test@Disabled
  public void testAdd() {
    Book book=new Book("book1","author1",50);
    bookDao.save(book);
  }
  @Test
  public void testFindAdd() {
    System.out.println(bookDao.findAll().get(0).getBookName());
  }
}

在这里插入图片描述
测试成功!

测试类注解解释

@Test设置一个测试方法
@Disabled禁用一个测试方法

本篇项目完整目录

在这里插入图片描述
在这里插入图片描述

下篇

SpringBoot从安装到实战(六)图书管理系统-整合Thymeleaf制作展示页面

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值