当前位置:主页 > java教程 > SpringBoot系列教程JPA如何环境搭建

SpringBoot系列教程JPA基础环境搭建的步骤

发布:2019-07-25 23:14:57 116


本站精选了一篇相关的编程文章,网友扶葱娟根据主题投稿了本篇教程内容,涉及到SpringBoot、JPA、环境搭建、SpringBoot系列教程JPA如何环境搭建相关内容,已被546网友关注,相关难点技巧可以阅读下方的电子资料。

SpringBoot系列教程JPA如何环境搭建

JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Spring Data JPA是在 Hibernate 基础上封装的一款框架。JPA作为标准,实际上并没有说局限于某个固定的数据源,事实上mysql,mongo, solr都是ok的。接下来我们将介绍下springboot结合jpa 来实现mysql的curd以及更加复杂一点的sql支持

jpa系列教程将包含以下几块

  • 环境搭建
  • 基础的插入、修改、删除数据的使用姿势
  • 基础的单表查询,如(>, <, = , in, like, between),分页,排序等
  • 多表关联查询
  • 事物使用

本篇为开始第一篇,先搭建一个可以愉快玩耍的jpa项目

I. 环境搭建

我们选择的数据库为mysql,所以有必要先安装一下,这里跳过mysql的安装教程,直接进入springboot项目的搭建

1. pom依赖

我们这里选择的是2.0.4.RELEASE版本进行演示

 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.0.4.RELEASE</version>
  <relativePath/> <!-- lookup parent from update -->
</parent>

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
  <java.version>1.8</java.version>
</properties>

<dependencies>
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.45</version>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
  </dependency>

  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
  </dependency>
  
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
  </dependency>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
  </dependency>
</dependencies>

<build>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </pluginManagement>
</build>

<repositories>
  <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/milestone</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>

上面的pom依赖中,关键的是下面两个, 第一个引入的是jpa相关包,后面那个则是mysql的连接依赖,相当于指定操作mysql数据库

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

2. 数据准备

创建一个测试表进行后续的读写操作,为了后续的事物讲解方便,我们创建一个表,里面存了每个人的钱

CREATE TABLE `money` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(20) NOT NULL DEFAULT '' COMMENT '用户名',
 `money` int(26) NOT NULL DEFAULT '0' COMMENT '钱',
 `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
 `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `update_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
 PRIMARY KEY (`id`),
 KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

在表中随意插入几条数据,以方便后面使用

INSERT INTO `money` (`id`, `name`, `money`, `is_deleted`, `create_at`, `update_at`)
VALUES
  (1, '一灰灰blog', 100, 0, '2019-04-18 17:01:40', '2019-04-18 17:01:40'),
  (2, '一灰灰2', 200, 0, '2019-04-18 17:01:40', '2019-04-18 17:01:40');

SpringBoot系列教程JPA之基础环境搭建的方法

3. 属性配置

创建springboot工程之后,添加mysql的相关配置,在resources目录下,新建文件 application.properties

## DataSource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/story?useUnicode=true&characterEncoding=UTF-8&useSSL=false
#spring.datasource.driver-class-name= com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=

SpringBoot系列教程JPA之基础环境搭建的方法

4. 项目构建并测试

根据JPA的一般使用姿势,我们需要针对上面的表,创建一个对应的POJO对象,将它们关联起来,代码如下:

  • 注意下几个注解 @Entity, @Table, @Column, @Id, @GeneratedValue
  • 注意下POJO中字段的类型,这里保证了和db的字段定义类型一致
  • (关于上面两点的更多知识点,后面的文章会给出更详细用法说明,欢迎持续跟进)
package com.git.hui.boot.jpa.entity;

import lombok.Data;

import javax.persistence.*;
import java.sql.Date;

/**
 * Created by @author yihui in 21:01 19/6/10.
 */
@Data
@Entity
@Table(name = "money")
public class MoneyPO {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Integer id;

  @Column(name = "name")
  private String name;

  @Column(name = "money")
  private Long money;

  @Column(name = "is_deleted")
  private Byte isDeleted;

  @Column(name = "create_at")
  private Date createAt;

  @Column(name = "update_at")
  private Date updateAt;
}

表结构定义完毕之后,接下来就是定义db的操作api,jpa的使用,通过方法名来解析出对应的sql,我们这里定义一个简单的Money表的操作API:

  • MoneyDemoRepository 继承自 JpaRepository
  • 两个泛型参数,第一个表示这个repository操作的表绑定的POJO,第二个表示自增id类型
package com.git.hui.boot.jpa.repository;

import com.git.hui.boot.jpa.entity.MoneyPO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

/**
 * Created by @author yihui in 21:01 19/6/10.
 */
public interface MoneyDemoRepository extends JpaRepository<MoneyPO, Integer> {
}

上面两个定义完毕之后,不需要其他的操作,就可以进行测试环境了,上面这个Repository提供了一些简单的操作

package com.git.hui.boot.jpa;

import com.git.hui.boot.jpa.demo.JpaQueryDemo;
import com.git.hui.boot.jpa.entity.MoneyPO;
import com.git.hui.boot.jpa.repository.MoneyDemoRepository;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Created by @author yihui in 20:58 19/6/10.
 */
@SpringBootApplication
public class Application {
  public Application(MoneyDemoRepository moneyDemoRepository) {
    MoneyPO moneyPO = moneyDemoRepository.findById(1).get();
    System.out.println(moneyPO);
  }

  public static void main(String[] args) {
    SpringApplication.run(Application.class);
  }
}

针对上面的测试case进行简单的说明,前面定义了一个POJO对象和一个RepositoryAPI,我们想直接操作对应的表,需要借助这个RepositoryAPI对象,但是它是接口类型,我们没法直接使用的,因为我们是在Spring生态体系中,所以可以直接通过IoC注入方式使用

所以上面的测试中,MoneyDemoRepository 对象实际上是由框架生成的一个代理对象,下面我们看下执行结果

SpringBoot系列教程JPA之基础环境搭建的方法

5. 小结

从上面的步骤下来,会发现搭建一个jpa的项目工程属于比较简单的过程,添加必要的依赖,稍微注意的是两个

  • 创建一个POJO 与我们实际的表关联起来
  • 创建一个RepositoryApi继承自org.springframework.data.repository.CrudRepository
  • 通过IoC/DI方式注入RepositoryApi对象,然后可以愉快的进行db操作

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。


参考资料

相关文章

  • Idea启动多个SpringBoot项目的3种最新方案

    发布:2023-03-22

    SpringBoot自带Tomcat,直接运行main方法里面的SpringApplication.run即可,并且访问时不需要带项目名,这篇文章主要介绍了Idea启动多个SpringBoot项目的3种方案,需要的朋友可以参考下


  • 关于OpenCV For Java环境搭建与功能演示

    发布:2020-01-22

    这篇文章主要介绍了x详解OpenCV For Java环境搭建与功能演示,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • SpringBoot项目打jar包与war包的详细步骤

    发布:2023-03-24

    SpringBoot和我们之前学习的web应用程序不一样,其本质上是一个 Java应用程序,那么又如何部署呢?这篇文章主要给大家介绍了关于SpringBoot项目打jar包与war包的详细步骤,需要的朋友可以参考下


  • Shiro在springboot中快速实现方法

    发布:2023-04-10

    Apache Shiro是一个Java的安全(权限)框架,可以容易的开发出足够好的应用,既可以在JavaEE中使用,也可以在JavaSE中使用,这篇文章主要介绍了Shiro在springboot中快速实现,需要的朋友可以参考下


  • 一文详解Springboot中filter的原理与注册

    发布:2023-03-22

    这篇文章主要为大家详细介绍了Springboot中filter的原理与注册的相关知识,文中的示例代码讲解详细,对我们掌握SpringBoot有一定的帮助,需要的可以参考一下


  • SpringBoot整合Retry实现错误重试过程逐步介绍

    发布:2023-03-22

    重试的使用场景比较多,比如调用远程服务时,由于网络或者服务端响应慢导致调用超时,此时可以多重试几次。用定时任务也可以实现重试的效果,但比较麻烦,用Spring Retry的话一个注解搞定所有,感兴趣的可以了解一下


  • SpringBoot加载读取配置文件过程详细分析

    发布:2023-04-25

    在实际的项目开发过程中,我们经常需要将某些变量从代码里面抽离出来,放在配置文件里面,以便更加统一、灵活的管理服务配置信息。所以本文将为大家总结一下SpringBoot加载配置文件的常用方式,需要的可以参考一下


  • JAVA中SpringBoot启动流程分析

    发布:2023-04-25

    这篇文章主要介绍了JAVA中SpringBoot启动流程分析的相关资料,需要的朋友可以参考下


网友讨论