springboot - 搭建spring data jpa简单快速实现数据库读写

2022年01月13日 阅读数:3
这篇文章主要向大家介绍springboot - 搭建spring data jpa简单快速实现数据库读写,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

访问数据库是代码开发中最多见的任务之一,springboot搭配上spring data项目,在读写数据库的场景上很是简单方便好用,写起读写数据库代码来轻松愉快。java

本次实现的功能

本次咱们实现一个很是简单的数据写入、查询的功能。假设咱们在开发一个股票交易系统中的一个小模块,这个模块负责上市公司的录入和查询。 须要提供的功能是可以写入上市公司名称和对应的代码,可以根据代码查询上市公司的名称。mysql

建立数据库、建表

若是在本地搭建数据库,能够用docker快速启动一个mysql数据库,而后用IDEA自带的database链接功能,建立表查看数据,很是方便。spring

# my-secret-pw修改为本身要设置的数据库的root用户密码,这个命令默认安装最新版本的mysql(如今是8版本,若是用sequelpro链接可能报错,能够google搜索对应解决方案)
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql

咱们创建一个名为stock的数据库和数据表,数据库表结构很是简单,一个自增id,一个code表示代码一个name表示名称。sql

create database stock;
use stock;
create table stock
(
    id   bigint auto_increment
        primary key,
    code varchar(120) null,
    name varchar(120) null,
    constraint stock_code_uindex
        unique (code)
);

引入spring data jpa

要在springboot中使用spring data jps访问mysql数据库,咱们须要在项目中增长pom依赖和配置。docker

修改pom.xml,加入mysql-connector-java由于咱们使用的是mysql数据库,加入spring-boot-starter-data-jpa是springboot的spring data jpa依赖。数据库

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

修改application.properties或application.yml,如下以application.properties为例。注意下面的password和url按照本身的状况进行修改。springboot

spring.datasource.username=root
spring.datasource.password=123
spring.datasource.url=jdbc:mysql://localhost:3306/stock

建立数据库对象模型Entity类

咱们定义和数据库表中数据映射的Entity类,也就是咱们的模型类,通常状况下和数据库里的表结构字段一一映射便可。 下面我使用了lombok省去写getsetter的操做,Entity类须要加上@Entity注解,而且须要一个@Id注解加在id字段上,id字段上还有一个@GeneratedValue表示这个id是怎么生成的,这个字段自增则使用strategy = GenerationType.IDENTITYapp

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
@Data
public class Stock {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String code;
    private String name;
}

定义Repository接口

下面要定义咱们的DAO类了,在spring data里叫作Repository,咱们定义一个StockRepository,继承于JpaRepository,这个接口提供了增删改查等经常使用的操做。 接口中还定义了两个泛型,前面泛型的是Repository操做的Entity类,后面的泛型是Entity类的id的类型,咱们这里分别是Stock和Long。 Repository接口中还能够增长findXXXByXXX这样的方法,可以实现条件查询。咱们这里增长一个findStockByCode的方法spring-boot

public interface StockRepository extends JpaRepository<Stock, Long> {
    Stock findStockByCode(String code);
}

使用Repository

定义好StockRepository类后就能够在其余的bean里引用这个Repository使用了。ui

@Autowired
private StockRepository stockRepository;

@RequestMapping("/saveAndGet")
public Stock saveAndGet(Stock stock) {
    stockRepository.save(stock);
    return stock;
}

@RequestMapping("/getByCode")
public Stock getByCode(String code) {
    return stockRepository.findStockByCode(code);
}

总结

能够看到使用spring boot data jpa操做数据库很是简单方便快捷,不用作不少配置,操做数据库也不用写sql和手动映射代码。关于spring data jpa的使用和实现我会在后面单独写一个系列,欢迎你们关注点赞收藏转发。