欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot集成JPA持久層框架,簡(jiǎn)化數(shù)據(jù)庫(kù)操作

 更新時(shí)間:2021年06月19日 09:02:56   作者:知了一笑  
JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化規(guī)范。主要是為了簡(jiǎn)化持久層開(kāi)發(fā)以及整合ORM技術(shù),結(jié)束Hibernate、TopLink、JDO等ORM框架各自為營(yíng)的局面。JPA是在吸收現(xiàn)有ORM框架的基礎(chǔ)上發(fā)展而來(lái),易于使用,伸縮性強(qiáng)。

與SpringBoot2.0整合 

1、核心依賴(lài)

<!-- JPA框架 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2、配置文件

spring:
  application:
    name: node09-boot-jpa
  datasource:
    url: jdbc:mysql://localhost:3306/data_jpa?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

ddl-auto幾種配置說(shuō)明
1)create
每次加載hibernate時(shí)都刪除上一次的生成的表,然后根據(jù)bean類(lèi)重新來(lái)生成新表,容易導(dǎo)致數(shù)據(jù)丟失,(建議首次創(chuàng)建時(shí)使用)。
2)create-drop
每次加載hibernate時(shí)根據(jù)bean類(lèi)生成表,但是sessionFactory一關(guān)閉,表就自動(dòng)刪除。
3)update
第一次加載hibernate時(shí)根據(jù)bean類(lèi)會(huì)自動(dòng)建立起表的結(jié)構(gòu),以后加載hibernate時(shí)根據(jù)bean類(lèi)自動(dòng)更新表結(jié)構(gòu),即使表結(jié)構(gòu)改變了但表中的行仍然存在不會(huì)刪除以前的行。
4)validate
每次加載hibernate時(shí),驗(yàn)證創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu),只會(huì)和數(shù)據(jù)庫(kù)中的表進(jìn)行比較,不會(huì)創(chuàng)建新表,但是會(huì)插入新值。

3、實(shí)體類(lèi)對(duì)象

就是根據(jù)這個(gè)對(duì)象生成的表結(jié)構(gòu)。

@Table(name = "t_user")
@Entity
public class User {
    @Id
    @GeneratedValue
    private Integer id;
    @Column
    private String name;
    @Column
    private Integer age;
    // 省略 GET SET
}

4、JPA框架的用法

定義對(duì)象的操作的接口,繼承JpaRepository核心接口。

import com.boot.jpa.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User,Integer> {

    // 但條件查詢(xún)
    User findByAge(Integer age);
    // 多條件查詢(xún)
    User findByNameAndAge(String name, Integer age);
    // 自定義查詢(xún)
    @Query("from User u where u.name=:name")
    User findSql(@Param("name") String name);
}

5、封裝一個(gè)服務(wù)層邏輯

import com.boot.jpa.entity.User;
import com.boot.jpa.repository.UserRepository;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class UserService {
    @Resource
    private UserRepository userRepository ;
    // 保存
    public void addUser (User user){
        userRepository.save(user) ;
    }
    // 根據(jù)年齡查詢(xún)
    public User findByAge (Integer age){
        return userRepository.findByAge(age) ;
    }
    // 多條件查詢(xún)
    public User findByNameAndAge (String name, Integer age){
        return userRepository.findByNameAndAge(name,age) ;
    }
    // 自定義SQL查詢(xún)
    public User findSql (String name){
        return userRepository.findSql(name) ;
    }
    // 根據(jù)ID修改
    public void update (User user){
        userRepository.save(user) ;
    }
    //根據(jù)id刪除一條數(shù)據(jù)
    public void deleteStudentById(Integer id){
        userRepository.deleteById(id);
    }
}

測(cè)試代碼塊 

import com.boot.jpa.JpaApplication;
import com.boot.jpa.entity.User;
import com.boot.jpa.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = JpaApplication.class)
public class UserJpaTest {
    @Resource
    private UserService userService ;
    @Test
    public void addUser (){
        User user = new User() ;
        user.setName("知了一笑");
        user.setAge(22);
        userService.addUser(user);
        User user1 = new User() ;
        user1.setName("cicada");
        user1.setAge(23);
        userService.addUser(user1);
    }
    @Test
    public void findByAge (){
        Integer age = 22 ;
        // User{id=3, name='知了一笑', age=22}
        System.out.println(userService.findByAge(age));
    }
    @Test
    public void findByNameAndAge (){
        System.out.println(userService.findByNameAndAge("cicada",23));
    }
    @Test
    public void findSql (){
        // User{id=4, name='cicada', age=23}
        System.out.println(userService.findSql("cicada"));
    }
    @Test
    public void update (){
        User user = new User() ;
        // 如果這個(gè)主鍵不存在,會(huì)以主鍵自增的方式新增入庫(kù)
        user.setId(3);
        user.setName("哈哈一笑");
        user.setAge(25);
        userService.update(user) ;
    }
    @Test
    public void deleteStudentById (){
        userService.deleteStudentById(5) ;
    }
}

源代碼地址 

GitHub地址:知了一笑
https://github.com/cicadasmile/spring-boot-base
碼云地址:知了一笑
https://gitee.com/cicadasmile/spring-boot-base

以上就是SpringBoot集成JPA持久層框架,簡(jiǎn)化數(shù)據(jù)庫(kù)操作的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot集成JPA持久層框架的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺談hibernate中對(duì)象的3種狀態(tài)_瞬時(shí)態(tài)、持久態(tài)、脫管態(tài)

    淺談hibernate中對(duì)象的3種狀態(tài)_瞬時(shí)態(tài)、持久態(tài)、脫管態(tài)

    下面小編就為大家?guī)?lái)一篇淺談hibernate中對(duì)象的3種狀態(tài)_瞬時(shí)態(tài)、持久態(tài)、脫管態(tài)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • SpringBoot集成Swagger構(gòu)建api文檔的操作

    SpringBoot集成Swagger構(gòu)建api文檔的操作

    這篇文章主要介紹了SpringBoot集成Swagger構(gòu)建api文檔的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • IDEA 卡住buid(編譯)不動(dòng)的解決辦法

    IDEA 卡住buid(編譯)不動(dòng)的解決辦法

    這篇文章主要介紹了IDEA 卡住buid(編譯)不動(dòng)的解決辦法(適用于maven和gradle)及定位思路,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java中堆和棧的概念和區(qū)別

    Java中堆和棧的概念和區(qū)別

    Java的堆是一個(gè)運(yùn)行時(shí)數(shù)據(jù)區(qū),類(lèi)的對(duì)象從堆中分配空間。棧中主要存放一些基本數(shù)據(jù)類(lèi)型的變量(byte,short,int,long,float,double,boolean,char)和對(duì)象的引用,這篇文章給大家詳細(xì)介紹java 堆和棧的概念和區(qū)別,一起看看吧
    2020-06-06
  • SpringBoot整合Redis及Redis工具類(lèi)撰寫(xiě)實(shí)例

    SpringBoot整合Redis及Redis工具類(lèi)撰寫(xiě)實(shí)例

    這篇文章主要介紹了SpringBoot整合Redis及Redis工具類(lèi)撰寫(xiě)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 基于SSM框架之個(gè)人相冊(cè)示例代碼

    基于SSM框架之個(gè)人相冊(cè)示例代碼

    本篇文章主要介紹了基于SSM框架之個(gè)人相冊(cè)示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Spring?RestTemplate遠(yuǎn)程調(diào)用過(guò)程

    Spring?RestTemplate遠(yuǎn)程調(diào)用過(guò)程

    這篇文章主要介紹了Spring?RestTemplate遠(yuǎn)程調(diào)用過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Maven依賴(lài)沖突的幾種有效解決方法總結(jié)

    Maven依賴(lài)沖突的幾種有效解決方法總結(jié)

    在項(xiàng)目開(kāi)發(fā)中使用Maven管理Jar包時(shí),常常會(huì)遇到Jar包依賴(lài)沖突,所以本文就給大家總結(jié)了幾種解決Maven依賴(lài)沖突的有效方法,需要的朋友可以參考下
    2023-07-07
  • JSON字符串轉(zhuǎn)成java的Map對(duì)象詳細(xì)步驟

    JSON字符串轉(zhuǎn)成java的Map對(duì)象詳細(xì)步驟

    這篇文章主要介紹了如何將JSON字符串轉(zhuǎn)換為Java對(duì)象的步驟,包括定義Element類(lèi)、使用Jackson庫(kù)解析JSON和添加依賴(lài),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • SpringBoot整合liquibase及l(fā)iquibase生成初始化腳本的方式

    SpringBoot整合liquibase及l(fā)iquibase生成初始化腳本的方式

    這篇文章主要介紹了SpringBoot整合liquibase的相關(guān)資料,文中給大家介紹了liquibase生成初始化腳本的兩種方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02

最新評(píng)論