Spring Data JPA 學(xué)習(xí)筆記
Spring Data JPA:
Spring Data JPA 是 spring data 項目下的一個模塊。提供了一套基于 JPA標(biāo)準(zhǔn)操作數(shù)據(jù)庫的簡化方案。底層默認(rèn)的是依賴 Hibernate JPA 來實現(xiàn)的。
Spring Data JPA 的技術(shù)特點:
我們只需要定義接口并集成 Spring Data JPA 中所提供的接口就可以了。不需要編寫接口實現(xiàn)類。
一、 創(chuàng)建SpringDataJPA項目
第一步:pom.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--springboot啟動-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.9</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.sunsky</groupId>
<artifactId>mybatis5_plus</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mybatis5_plus</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>8</java.version>
</properties>
<dependencies>
<!--mysql連接依賴-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!--實體類的注解-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--測試類的依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--進(jìn)行SpringDataJPA依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.4.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
第二步:pojo包下,寫User實體類
@Entity 標(biāo)注是一個實體類,實體類中的每一個屬性都對應(yīng)表中的一列。
@Table(name = “User”) 這個注解用于指定實體類對應(yīng)的數(shù)據(jù)庫表名。(但首字母會小寫)
@Data:這個注解是Lombok庫提供的,用于自動生成實體類的getter和setter方法、構(gòu)造函數(shù)、equals、canEqual、hashCode、toString方法。使用@Data注解可以簡化實體類的代碼,使實體類更加簡潔。
package com.sunsky.jpa_project.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @className: ${大數(shù)據(jù)學(xué)習(xí)}.
* @description: 用戶實體類
* @Theme:
* @author:xgh
* @create-day: 2024-03-05 10:12
*/
@Entity
@Table(name = "User")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
@Id
private Integer id;
private String name;
private Integer age;
private String email;
private String phone;
}
第三步:dao包下的UserDao接口,進(jìn)行業(yè)務(wù)的接口規(guī)范
UserDaoj接口繼承了CrudRepository JpaRepository所有的方法 增刪查改就不用自己
package com.sunsky.jpa_project.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.sunsky.jpa_project.pojo.User;
import java.util.List;
/**
* @className: ${大數(shù)據(jù)學(xué)習(xí)}.
* @description: dao層繼承了CrudRepository JpaRepository所有的方法 增刪查改就不用自己寫
* @Theme:
* @author:xgh
* @create-day: 2024-03-05 10:40
*/
@Repository
public interface UserDao extends CrudRepository<User,Integer>, JpaRepository<User,Integer> {
@Query("from User") //使用對象查詢
List<User> getAlls();
//使用sql查詢
@Query(value = "select * from user where name=? and age=?",nativeQuery = true)
List<User> getAlls(String name,Integer age);
@Query
List<User> findByNameAndAge(String name,Integer age);
}
第四步:測試類JpaProjectApplicationTests
基于@Query 注解的查詢文章來源:http://www.zghlxwxcb.cn/news/detail-845043.html
該注解是Spring Data JPA 庫中的一個功能,它允許開發(fā)者自定義 JPA 查詢語句。通過在 Repository 接口中使用 @Query 注解,你可以直接在接口的方法上編寫 JPA 查詢語句,而不需要寫實際的 SQL 語句。文章來源地址http://www.zghlxwxcb.cn/news/detail-845043.html
package com.sunsky.jpa_project;
import com.sunsky.jpa_project.dao.UserDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import com.sunsky.jpa_project.pojo.User;
import java.util.ArrayList;
import java.util.List;
@SpringBootTest
class JpaProjectApplicationTests {
@Autowired
UserDao userDao;
@Test
void contextLoads() {
List<User> users = userDao.findAll();
System.out.println(users);
for (User user : users) {
System.out.println(user);
}
}
@Test
void save(){
User user = new User(8,"斗破蒼穹",159,"wer@123","120");
User user1 = new User(7,"斗破蒼穹",159,"wer@123","120");
User save = userDao.save(user);
userDao.save(user1);
System.out.println("存儲成功");
}
@Test
void delete() {
List<Integer> ids = new ArrayList<>();
ids.add(7);
ids.add(8);
userDao.deleteAllById(ids);
System.out.println("刪除成功");
}
// 通過id存值的時候,相當(dāng)于更新操作
@Test
void update(){
User user = new User(1,"李四",20,"234@234","11069");
userDao.save(user);
}
// 使用對象查詢
@Test
void zdy() {
List<User> alls = userDao.getAlls();
for (User all : alls) {
System.out.println(all);
}
}
//使用sql查詢
@Test
void zdy2() {
List<User> alls = userDao.getAlls();
for (User all : alls) {
System.out.println(all);
}
}
// 使用關(guān)鍵字
@Test
void zdy3(){
List<User> alls = userDao.findByNameAndAge("李四",20);
for (User all:alls
) {
System.out.println(all);
}
}
}
到了這里,關(guān)于Spring Data JPA 學(xué)習(xí)筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!