【案例:图书管理2】基于IDEA与MYSQL数据库连接,整合Spring Data JPA(全程保姆级教程)

 引言

        本次案例主要参考Spring Boot企业级开发教程第2版第5章的内容,主要解决了配置依赖版本的更新,数据库的创建与连接以及测试与连接等难题!本人希望通过总结学习心得的方式巩固实践开发过程一些细节性的知识,如有问题,欢迎指正!

一、操作设备

IntelliJ IDEA:2024.2.1

Maven: 3.8.1

MySQL数据库连接: Navicat Premium 16

二、任务实现

1.创建 项目

可使用SPring Initializr方式或者Maven方式构建Spring Boot项目(两种构建方式可关注哈哈燕220125,并在之前的文章内查找哦!)

2.配置依赖

在项目的pom.xml文件中配置Spring Boot 整合Spring Data JPA的 依赖(包括Spring Boot父工程的依赖、MYSQL驱动的依赖和Spring Data JPA的启动器依赖):

<?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 http://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>3.1.2</version>
    <relativePath/>
  </parent>

  <groupId>com.huawei</groupId>
  <artifactId>SpringDataJPA</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>SpringDataJPA</name>
  <url>http://maven.apache.org</url>

  <properties>
    <maven.compiler.source>21</maven.compiler.source>
    <maven.compiler.target>21</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>
        org.springframework.boot
      </groupId>
      <artifactId>
        spring-boot-starter
      </artifactId>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.31</version> <!-- 替换原版本 -->
    </dependency>
    <dependency>
      <groupId>
        org.springframework.boot
      </groupId>
      <artifactId>
        spring-boot-starter-data-jpa
      </artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
<!--    <dependency>-->
<!--      <groupId>com.baomidou</groupId>-->
<!--      <artifactId>mybatis-plus-boot-starter</artifactId>-->
<!--      <version>3.5.3.1</version>-->
<!--    </dependency>-->
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>
          org.springframework.boot
        </groupId>
        <artifactId>
          spring-boot-maven-plugin
        </artifactId>
      </plugin>
    </plugins>
  </build>
</project>

3、设置配置信息

在项目的resources目录下创建application.yml文件:

spring:
  datasource:
    url: "jdbc:mysql://localhost:3306/springbootdata"
    username: root
    password: 'root'
  jpa:
    show-sql: true

4.创建实体类

在项目的Java目录下创建包com.huawei.entity,并在该包下创建实体类Book.java

package com.huawei.entity;
//import javax.persistence.*;
import jakarta.persistence.*;//java8之后相关的包从 javax.persistence 迁移到了 jakarta.persistence
@Entity
@Table(name="book")
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;        //图书编号
    @Column(name="name")
    private String name;       //图书名称
    private String author;     //图书作者
    private String press;      //图书出版社
    private String status;     //图书状态

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPress() {
        return press;
    }

    public void setPress(String press) {
        this.press = press;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Book() {
    }

    public Book(Integer id, String name, String author, String press, String status) {
        this.id = id;
        this.name = name;
        this.author = author;
        this.press = press;
        this.status = status;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", press='" + press + '\'' +
                ", status='" + status + '\'' +
                '}';
    }
}

5.自定义Repository接口:

在项目的Java目录下创建包com.huawei.dao,并在该包下自定义接口BookRepository.java

package com.huawei.dao;

import com.huawei.entity.Book;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@Repository
public interface BookRepository extends JpaRepository<Book,Integer> {
    Book findByAuthorAndStatus(String author,String status);
    @Modifying
    @Transactional
    @Query("delete from Book b where b.id = :id")
    Integer deleteBookById(@Param("id")Integer id);
}

6.创建数据库

至此,实体类和操作实体的接口都已经定义好,因为没有JPA的配置信息中设置项目启动时根据实体类自动创建数据表,故我在Navicat Premium 16中创建了数据库

数据库自己命名,然后选择以下信息:

右键刷新并双击查看表格数据(由于我创建了book,所以图片案例就新新建了book1,下面的代码大家可以根据自身情况自行修改哦!)

USE springbootdata;

CREATE TABLE book(
  id int(0) NOT NULL AUTO_INCREMENT,
	name VARCHAR(32),
	author VARCHAR(32),
	press VARCHAR(32),
	status VARCHAR(1),
	PRIMARY KEY (id) USING BTREE
);
INSERT INTO book VALUES(1,'楚辞','屈原','中国文联出版社','0');	
INSERT INTO book VALUES(2,'纳兰词','纳兰性德','中国文联出版社','1');	
INSERT INTO book VALUES(3,'西游记','吴承恩','中国文联出版社','2');	
	

7.创建项目启动类和测试类

在src\main\java目录的com.huawei包下创建项目启动类SpringDataJPAApplication.java

package com.huawei;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//import org.mybatis.spring.annotation.MapperScan;
//
//@MapperScan("com.huawei.dao")
@SpringBootApplication
public class SpringDataJPAApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringDataJPAApplication.class, args);
    }
}

 在src\test\java目录下创建com.huawei,并在该包下创建测试类SpringDataJPAApplicationTests .java

package com.huawei;

import com.huawei.dao.BookRepository;
import com.huawei.entity.Book;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
import java.util.Optional;
@SpringBootTest
class SpringDataJPAApplicationTests {
    @Autowired
    private BookRepository bookRepository;
    private  void booksInfo(){
        List<Book> books = bookRepository.findAll();
        for (Book book : books) {
            System.out.println(book);
        }
    }
    @Test
    void saveBook() {
        Book book=new Book(null,"离骚","屈原","清华大学出版社","1");
        //新增图书
        bookRepository.save(book);
        booksInfo();
    }
    @Test
    void editBook() {
        Optional<Book> op = bookRepository.findById(1);
        Book book = op.get();
        book.setName("天问");
        //修改图书
        bookRepository.save(book);
        booksInfo();
    }
    @Test
    void findBook() {
        //根据图书作者和图书状态查找对应的图书
        Book b = bookRepository.findByAuthorAndStatus("屈原", "1");
        System.out.println(b);
    }
    @Test
    void delBook() {
        bookRepository.deleteBookById(1);
        booksInfo();
    }
}

8.编写单元测试进行接口方法测试及整合测试

saveBook()方法(新增):

editBook()方法(修改):

findBook()方法(查询):

delBook()方法(删除):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值