Spring Data JPA 是 spring data 项目下的一个模块。提供了一套基于 JPA标准操作数据库的简化方案。底层默认的是依赖 Hibernate JPA 来实现的。
我们只需要定义接口并集成 Spring Data JPA 中所提供的接口就可以了。不需要编写接口实现类。
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.6.9
com.sunsky
mybatis5_plus
0.0.1-SNAPSHOT
mybatis5_plus
Demo project for Spring Boot
8
mysql
mysql-connector-java
8.0.22
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-data-jpa
2.4.2
org.springframework.boot
spring-boot-maven-plugin
org.projectlombok
lombok
@Entity 标注是一个实体类,实体类中的每一个属性都对应表中的一列。
@Table(name = “User”) 这个注解用于指定实体类对应的数据库表名。(但首字母会小写)
@Data:这个注解是Lombok库提供的,用于自动生成实体类的getter和setter方法、构造函数、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: ${大数据学习}.
* @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;
}
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: ${大数据学习}.
* @description: dao层继承了CrudRepository JpaRepository所有的方法 增删查改就不用自己写
* @Theme:
* @author:xgh
* @create-day: 2024-03-05 10:40
*/
@Repository
public interface UserDao extends CrudRepository, JpaRepository {
@Query("from User") //使用对象查询
List getAlls();
//使用sql查询
@Query(value = "select * from user where name=? and age=?",nativeQuery = true)
List getAlls(String name,Integer age);
@Query
List findByNameAndAge(String name,Integer age);
}
基于@Query 注解的查询
该注解是Spring Data JPA 库中的一个功能,它允许开发者自定义 JPA 查询语句。通过在 Repository 接口中使用 @Query 注解,你可以直接在接口的方法上编写 JPA 查询语句,而不需要写实际的 SQL 语句。
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 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 ids = new ArrayList<>();
ids.add(7);
ids.add(8);
userDao.deleteAllById(ids);
System.out.println("删除成功");
}
// 通过id存值的时候,相当于更新操作
@Test
void update(){
User user = new User(1,"李四",20,"234@234","11069");
userDao.save(user);
}
// 使用对象查询
@Test
void zdy() {
List alls = userDao.getAlls();
for (User all : alls) {
System.out.println(all);
}
}
//使用sql查询
@Test
void zdy2() {
List alls = userDao.getAlls();
for (User all : alls) {
System.out.println(all);
}
}
// 使用关键字
@Test
void zdy3(){
List alls = userDao.findByNameAndAge("李四",20);
for (User all:alls
) {
System.out.println(all);
}
}
}