Spring Data JPA 是 spring data 项目下的一个模块。提供了一套基于 JPA标准操作数据库的简化方案。底层默认的是依赖 Hibernate JPA 来实现的。
我们只需要定义接口并集成 Spring Data JPA 中所提供的接口就可以了。不需要编写接口实现类。
4.0.0 org.springframework.boot spring-boot-starter-parent2.6.9 com.sunsky mybatis5_plus0.0.1-SNAPSHOT mybatis5_plus Demo project for Spring Boot 8 mysql mysql-connector-java8.0.22 org.projectlombok lomboktrue org.springframework.boot spring-boot-starter-testtest org.springframework.boot spring-boot-starter-data-jpa2.4.2 org.springframework.boot spring-boot-maven-pluginorg.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() { Listusers = 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); } } }