一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot系列教程JPA之基礎環(huán)境搭建的方法

SpringBoot系列教程JPA之基礎環(huán)境搭建的方法

2019-07-08 12:58小灰灰Blog Java教程

這篇文章主要介紹了SpringBoot系列教程JPA之基礎環(huán)境搭建的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

JPA(Java Persistence API)Java持久化API,是 Java 持久化的標準規(guī)范,Hibernate是持久化規(guī)范的技術實現,而Spring Data JPA是在 Hibernate 基礎上封裝的一款框架。JPA作為標準,實際上并沒有說局限于某個固定的數據源,事實上mysql,mongo, solr都是ok的。接下來我們將介紹下springboot結合jpa 來實現mysql的curd以及更加復雜一點的sql支持

jpa系列教程將包含以下幾塊

  • 環(huán)境搭建
  • 基礎的插入、修改、刪除數據的使用姿勢
  • 基礎的單表查詢,如(>, <, = , in, like, between),分頁,排序等
  • 多表關聯查詢
  • 事物使用

本篇為開始第一篇,先搭建一個可以愉快玩耍的jpa項目

I. 環(huán)境搭建

我們選擇的數據庫為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. 數據準備

創(chuàng)建一個測試表進行后續(xù)的讀寫操作,為了后續(xù)的事物講解方便,我們創(chuàng)建一個表,里面存了每個人的錢

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 '創(chuàng)建時間',
 `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之基礎環(huán)境搭建的方法

3. 屬性配置

創(chuàng)建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之基礎環(huán)境搭建的方法

4. 項目構建并測試

根據JPA的一般使用姿勢,我們需要針對上面的表,創(chuàng)建一個對應的POJO對象,將它們關聯起來,代碼如下:

  • 注意下幾個注解 @Entity@Table@Column@Id@GeneratedValue
  • 注意下POJO中字段的類型,這里保證了和db的字段定義類型一致
  • (關于上面兩點的更多知識點,后面的文章會給出更詳細用法說明,歡迎持續(xù)跟進)
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> {
}

上面兩個定義完畢之后,不需要其他的操作,就可以進行測試環(huán)境了,上面這個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生態(tài)體系中,所以可以直接通過IoC注入方式使用

所以上面的測試中,MoneyDemoRepository 對象實際上是由框架生成的一個代理對象,下面我們看下執(zhí)行結果

SpringBoot系列教程JPA之基礎環(huán)境搭建的方法

5. 小結

從上面的步驟下來,會發(fā)現搭建一個jpa的項目工程屬于比較簡單的過程,添加必要的依賴,稍微注意的是兩個

  • 創(chuàng)建一個POJO 與我們實際的表關聯起來
  • 創(chuàng)建一個RepositoryApi繼承自org.springframework.data.repository.CrudRepository
  • 通過IoC/DI方式注入RepositoryApi對象,然后可以愉快的進行db操作

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
  • Java教程java 中鎖的性能提高辦法

    java 中鎖的性能提高辦法

    這篇文章主要介紹了java 中鎖的性能提高辦法的相關資料,需要的朋友可以參考下...

    Java之家3092020-08-13
  • Java教程SpringBoot引入Thymeleaf的實現方法

    SpringBoot引入Thymeleaf的實現方法

    這篇文章主要介紹了SpringBoot引入Thymeleaf的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下...

    Bobby6472021-07-28
  • Java教程Java之Springcloud Feign組件詳解

    Java之Springcloud Feign組件詳解

    這篇文章主要介紹了Java之Springcloud Feign組件詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    深情以改10322021-11-12
  • Java教程springboot ehcache 配置使用方法代碼詳解

    springboot ehcache 配置使用方法代碼詳解

    EhCache是一個比較成熟的Java緩存框架,Springboot對ehcache的使用非常支持,所以在Springboot中只需做些配置就可使用,且使用方式也簡易,今天給大家分享spri...

    m1719309529412912021-09-16
  • Java教程JavaWeb 實現驗證碼功能(demo)

    JavaWeb 實現驗證碼功能(demo)

    在 WEB-APP 中一般應用于:登錄、注冊、買某票、秒殺等場景,大家都接觸過這個驗證碼操作,今天小編通過實例代碼給大家講解javaweb實現驗證碼功能,需要...

    java教程網12832020-08-05
  • Java教程淺談Java(SpringBoot)基于zookeeper的分布式鎖實現

    淺談Java(SpringBoot)基于zookeeper的分布式鎖實現

    這篇文章主要介紹了Java(SpringBoot)基于zookeeper的分布式鎖實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    LJY_SUPER5742021-07-21
  • Java教程Java list.remove( )方法注意事項

    Java list.remove( )方法注意事項

    這篇文章主要介紹了Java list.remove( )方法注意事項,非常簡單易懂,需要的朋友可以參考下...

    妖久9552021-05-25
  • Java教程JAVA中通過自定義注解進行數據驗證的方法

    JAVA中通過自定義注解進行數據驗證的方法

    java 自定義注解驗證可自己添加所需要的注解,下面這篇文章主要給大家介紹了關于JAVA中通過自定義注解進行數據驗證的相關資料,文中通過示例代碼介紹...

    Decouple6362021-05-25
主站蜘蛛池模板: 午夜久久影院 | 日本护士撒尿xxxx18 | 欧美性xxxxxx爱| 亚洲精品久久久久福利网站 | 国产未成女年一区二区 | 第一国内永久免费福利视频 | 亚洲图片综合网 | 成成人看片在线 | 日本免费高清在线观看播放 | 亚洲国产成人久久99精品 | 3d动漫美女被吸乳羞羞视频 | 超级乱淫伦小说1女多男 | 亚洲2023无矿砖码砖区 | 欧美xbxbxbbxxbb精品 | 精品美女国产互换人妻 | 久久精品国产免费播高清无卡 | 成人网视频免费播放 | 男同互操 | 色多多影院 | 免费观看无人区完整版 | 国产日韩免费视频 | 日韩一区在线播放 | 欧美老少 | 欧美精品超清在线播放 | 欧美日韩国产亚洲一区二区三区 | 青草视频在线观看免费资源 | 18性夜影院午夜寂寞影院免费 | 好大好硬好长好爽a网站 | 91国内精品 | 国产麻豆91欧美一区二区 | 亚洲黄色大片 | 91久久青青草原线免费 | 欧美精品久久久久久久免费观看 | 欧美男同互吃gay老头 | xxx中国bbbwww | 精品国产免费第一区二区三区日韩 | 99在线在线视频免费视频观看 | 白发在线视频播放观看免费 | 亚欧毛片基地国产毛片基地 | 成人在线日韩 | 肥胖女性大bbbbbb视频女厕 |