精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

SpringDataJPA的配置與使用方法

本篇文章給大家分享的是有關(guān)Spring Data JPA的配置與使用方法,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)公司是專業(yè)的丘北網(wǎng)站建設(shè)公司,丘北接單;提供成都做網(wǎng)站、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行丘北網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

    首先簡(jiǎn)單介紹一下SpringData:Spring Data 項(xiàng)目的目的是為了簡(jiǎn)化構(gòu)建基于 Spring 框架應(yīng)用的數(shù)據(jù)訪問計(jì)數(shù),包括非關(guān)系數(shù)據(jù)庫、Map-Reduce 框架、云數(shù)據(jù)服務(wù)等等;另外也包含對(duì)關(guān)系數(shù)據(jù)庫的訪問支持。

    再介紹一下JPA:Java 持久化 API (JPA)是一個(gè) Java 應(yīng)用程序接口 規(guī)范,描述了使用 Java標(biāo)準(zhǔn)版平臺(tái)(Java SE) 和 Java企業(yè)版平臺(tái)(Java EE)的應(yīng)用中的 關(guān)系數(shù)據(jù) 的管理。(摘自維基百科)

    現(xiàn)在我們可以來聊一聊Spring Data JPA。從Spring Data的介紹以及JPA的介紹不難看出,Spring Data JPA是使用JPA標(biāo)準(zhǔn)的持久層工具。持久層工具,那就有意思了,我們已經(jīng)有Hibernate和Mybatis等等好用的持久層工具了,為什么要用Spring Data JPA呢?這是一個(gè)好問題,我賣個(gè)關(guān)子,我們先來看看Spring Data如何與Spring進(jìn)行整合。

1. Spring整合Spring Data JPA

        1.1 添加依賴


    org.springframework.boot
    spring-boot-starter-data-jpa


    MySQL
    mysql-connector-java
    6.0.6

        1.2 配置屬性

#通用數(shù)據(jù)源配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot_jpa?charset=utf8mb4&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
# Hikari 數(shù)據(jù)源專用配置
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5
# JPA 相關(guān)配置
#在 SrpingBoot 2.0 版本中,Hibernate 創(chuàng)建數(shù)據(jù)表的時(shí)候,默認(rèn)的數(shù)據(jù)庫存儲(chǔ)引擎選擇的是 MyISAM (之前好像是 InnoDB,這點(diǎn)比較詭異)。這個(gè)參數(shù)是在建表的時(shí)候,將默認(rèn)的存儲(chǔ)引擎切換為 InnoDB 用的。
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
#配置在日志中打印出執(zhí)行的 SQL 語句信息。
spring.jpa.show-sql=true
#配置指明在程序啟動(dòng)的時(shí)候要?jiǎng)h除并且創(chuàng)建實(shí)體類對(duì)應(yīng)的表。這個(gè)參數(shù)很危險(xiǎn),因?yàn)樗麜?huì)把對(duì)應(yīng)的表刪除掉然后重建。所以千萬不要在生成環(huán)境中使用。只有在測(cè)試環(huán)境中,一開始初始化數(shù)據(jù)庫結(jié)構(gòu)的時(shí)候才能使用一次。
spring.jpa.hibernate.ddl-auto=update

    對(duì)spring.jpa.hibernate.ddl-auto屬性感興趣的同學(xué),可以去下面這篇博客看看。jpa的hibernate.ddl-auto的幾個(gè)屬性值區(qū)別。

    1.3 創(chuàng)建實(shí)體類

import lombok.Data;

import javax.persistence.*;

/*
 * @Description TODO
 * @author Raindrop
 * @date 2019/8/22 9:10
 */
@Data       //lombok構(gòu)建Get和Set方法
@Entity     //聲明該類為實(shí)體類
@Table(name = "SpringDataJpa")      //該實(shí)體類對(duì)應(yīng)的表名
public class Test {
    @Id     //該屬性為主鍵
    @GeneratedValue(strategy =  GenerationType.IDENTITY)        //JPA通用策略生成器
    @Column(name = "id")        //數(shù)據(jù)表中列名
    private Integer id;

    @Column(name = "username", columnDefinition = "varchar(50) not null")   //數(shù)據(jù)表中列名以及列類型
    private String username;

    @Column(name = "email", columnDefinition = "varchar(50) not null")   //數(shù)據(jù)表中列名以及列類型
    private String email;

    @Column(name = "sex", columnDefinition = "varchar(50) not null")   //數(shù)據(jù)表中列名以及列類型
    private String sex;

    @Column(name = "age", columnDefinition = "varchar(50) not null")   //數(shù)據(jù)表中列名以及列類型
    private String age;
}

    1.4 創(chuàng)建dao層

          好了,我們的準(zhǔn)備工作都已經(jīng)做完了,接下來我們就可以快樂的進(jìn)行CRUD了。

          創(chuàng)建Repository類

package run.halo.app.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import run.halo.app.model.entity.*;

import java.util.List;

public interface RaindropUserRepository extends JpaRepository {
    //自定義方法 根據(jù)方法名來創(chuàng)建sql語句
    //形成的SQL語句:select * from spring_data_jpa where userName = ?1
    RaindropUser findByUsername(String userName);

    //自定義方法 根據(jù)方法名來創(chuàng)建sql語句
    //形成的SQL語句:select * from spring_data_jpa where sex = ?1 and email=?2
    RaindropUser findBySexAndEmail(String sex, String email);

    //切記切記,native的使用方法   JPA使用nativeQuery=true來區(qū)分是不是原生SQL
    //以下方法是錯(cuò)誤的,不可以使用原生的sql,而要是用對(duì)應(yīng)的實(shí)體類以及屬性來表示列和表名
    //@Query("select id,username from spring_data_jpa where age < :age")
    @Query("select new run.halo.app.model.entity.RaindropUser(raindrop.id," +
            "raindrop.username,raindrop.email,raindrop.sex," +
            "raindrop.age) from RaindropUser raindrop where raindrop.age < ?1")
    List findByLtAge(Integer age);
//    該示例也是錯(cuò)的
//    @Query("select new run.halo.app.model.entity.RaindropUser(a.id,a.username,a.email,a.sex,a.age) from spring_data_jpa a where age > ?1")
//    RaindropUser findByRtAge(Integer age);
}

    1.5 測(cè)試類

    @Test
    public void Test(){
        RaindropUser raindropUser = new RaindropUser();
//        raindropUser.setEmail("123123@gmail.com");
//        raindropUser.setAge(12);
//        raindropUser.setUsername("Raindrop");
//        raindropUser.setSex("man");
//        繼承自JpaRepository類都有一些基礎(chǔ)方法,稍后講解。該方法為保存數(shù)據(jù)
//        raindropUserRepository.save(raindropUser);
        List list = raindropUserRepository.findByLtAge(15);

        System.out.println("List: " + list.get(0));
//        RaindropUser raindropUser1 = raindropUserRepository.findByRtAge(10);
//        System.out.println(raindropUser);
//        System.out.println(raindropUser1);
    }

    1.6 JAP方法解析

        我們?cè)赗epository類中定義了findByUsername以及findBySexAndEmail方法,SpringData會(huì)根據(jù)方法名自動(dòng)生成SQL語句來執(zhí)行。

重點(diǎn)詞匯以及生成的SQL語句

KeywordSampleJPQL snippet
AndfindByLastnameAndFirstname… where x.lastname = ?1 and x.firstname = ?2
OrfindByLastnameOrFirstname… where x.lastname = ?1 or x.firstname = ?2
Is,EqualsfindByFirstnameIs,findByFirstnameEquals… where x.firstname = ?1
BetweenfindByStartDateBetween… where x.startDate between ?1 and ?2
LessThanfindByAgeLessThan… where x.age < ?1
LessThanEqualfindByAgeLessThanEqual… where x.age ? ?1
GreaterThanfindByAgeGreaterThan… where x.age > ?1
GreaterThanEqualfindByAgeGreaterThanEqual… where x.age >= ?1
AfterfindByStartDateAfter… where x.startDate > ?1
BeforefindByStartDateBefore… where x.startDate < ?1
IsNullfindByAgeIsNull… where x.age is null
IsNotNull,NotNullfindByAge(Is)NotNull… where x.age not null
LikefindByFirstnameLike… where x.firstname like ?1
NotLikefindByFirstnameNotLike… where x.firstname not like ?1
StartingWithfindByFirstnameStartingWith… where x.firstname like ?1 (parameter bound with appended %)
EndingWithfindByFirstnameEndingWith… where x.firstname like ?1 (parameter bound with prepended %)
ContainingfindByFirstnameContaining… where x.firstname like ?1 (parameter bound wrapped in %)
OrderByfindByAgeOrderByLastnameDesc… where x.age = ?1 order by x.lastname desc
NotfindByLastnameNot… where x.lastname <> ?1
InfindByAgeIn(Collection ages)… where x.age in ?1
NotInfindByAgeNotIn(Collectionage)… where x.age not in ?1
TRUEfindByActiveTrue()… where x.active = true
FALSEfindByActiveFalse()… where x.active = false
IgnoreCasefindByFirstnameIgnoreCase… where UPPER(x.firstame) = UPPER(?1)

以上就是Spring Data JPA的配置與使用方法,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前名稱:SpringDataJPA的配置與使用方法
URL標(biāo)題:http://m.jcarcd.cn/article/pecdio.html
主站蜘蛛池模板: 国产女优在线观看 | 99热精品在线 | 91综合网。 | 91丨九色丨国产 | 国产韩国精品一区二 | 日本国产中文字幕 | 欧美一区一区二区 | 国产黑色丝 | 狠狠亚洲 | 人在线成视频 | 皮皮影视| 国产精品视频观看 | 国产91j | 91精品久 | 国产又粗又大 | 人人97人人干 | 午夜视频在线观 | 国产原创在线影院 | 日本成人一区二区 | 国产v在线在线观 | 国产在线91精品 | 午夜在线一区二区 | 三级中文 | 日韩在线观看视频黄 | 精品国产人成在线 | www.亚洲欧美 | 成人精品综 | 午夜亚洲一区 | 日本成年网 | 日本妞xxxxxx | 日韩午夜福利 | 91精品在线观看 | 99亚洲 | 国产成年码 | 国产黄页网址大全 | 国产极品视觉盛宴 | 国产精品专区第1页 | 国产精品喉奥 | 蜜臀91| 91午夜看片 | 日韩精品二区三区 |