当前位置: 首页 > news >正文

Spring data JPA常用命令

简介 

Spring Data JPA是Spring框架的一部分,它提供了一个简化的方式来与关系型数据库进行交互。JPA代表Java持久化API,它是Java EE规范中定义的一种对象关系映射(ORM)标准。Spring Data JPA在JPA的基础上提供了更高级的抽象,使得开发人员能够更轻松地进行数据库操作。

使用Spring Data JPA,您可以通过定义实体类和Repository接口来执行CRUD操作和自定义查询。Repository接口提供了一组常用的方法,如保存、查找、删除等,而无需编写具体的实现。Spring Data JPA会根据方法的命名约定自动生成查询,并将查询结果映射到相应的实体类中。

此外,Spring Data JPA还提供了一些功能强大的特性。您可以通过注解和查询注解来定义一对多、多对一和多对多等关联关系。您还可以使用分页和排序等功能来处理大量的数据。另外,通过使用@Query注解,您可以编写自定义的查询语句。

Spring Data JPA支持各种关系型数据库,包括MySQL、PostgreSQL、Oracle等。它还可以与其他Spring项目(如Spring Boot)无缝集成,使得开发和配置变得更加简单和一致。可以通过简化了数据库层的操作,提高开发效率并降低样板代码的编写量。

总而言之,Spring Data JPA是一个强大而灵活的工具,使得与关系型数据库进行交互变得更加简单和高效。它可以帮助您快速开发功能强大的Java应用程序,并减少与数据库相关的繁琐工作。

 


基本步骤

当您使用Spring Data JPA时,它将为您提供一种简化数据库访问的方法。它通过自动生成查询和基本的CRUD操作来减少编写大量样板代码的工作量。下面是使用Spring Data JPA的一些基本步骤:

添加依赖:在您的项目中,您需要添加Spring Data JPA的依赖。您可以在项目的构建文件(如pom.xml或build.gradle)中添加适当的依赖项。

配置Maven依赖的命令如下:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

 

配置数据源:您需要配置一个数据源,以使Spring能够连接到数据库。您可以在应用程序的配置文件(如application.properties或application.yml)中指定数据库的连接信息。

spring.datasource.url=jdbc:mysql://localhost:3306/db_name
spring.datasource.username=username
spring.datasource.password=passwordspring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.generate-ddl=true

 创建实体类:创建代表数据库表的实体类。每个实体类将映射到数据库中的一张表,并且每个实体类的属性将映射到表中的列。

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String name;private int age;// 省略构造函数、getter和setter方法
}

创建Repository接口:创建一个继承自JpaRepository或其他Spring Data提供的Repository接口的接口。这个接口将提供基本的CRUD操作,以及其他自定义的查询方法。

  1. 使用注解:可以使用注解来自定义Repository接口的行为。例如,使用@Query注解可以定义自定义的查询方法。

import org.springframework.data.jpa.repository.JpaRepository;public interface UserRepository extends JpaRepository<User, Long> {// 这里可以定义自定义查询方法
}

自动注入Repository:在需要访问数据库的地方,可以使用@Autowired或@Inject等注解将Repository接口自动注入到您的类中。

使用Repository方法:使用Repository接口中提供的方法来进行数据库操作。例如,可以使用save()方法来插入或更新数据,使用findById()方法来查找数据等等。

执行查询:Spring Data JPA将根据方法的命名约定自动生成查询,您也可以使用@Query注解来定义自己的查询。执行查询时,Spring Data JPA将帮助您将查询结果映射到相应的实体类中。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserService {@Autowiredprivate UserRepository userRepository;public void createUser(User user) {userRepository.save(user);}public User getUserById(Long id) {return userRepository.findById(id).orElse(null);}// 其他操作方法...
}

增删查改

当使用Spring Data JPA进行基本数据库操作时,以下是一些常见的示例操作:

插入数据:

// 创建实体对象
User user = new User();
user.setName("John");
user.setAge(25);// 保存实体对象到数据库
userRepository.save(user);

更新数据:

// 根据ID获取实体对象
Optional<User> optionalUser = userRepository.findById(1L);
if (optionalUser.isPresent()) {User user = optionalUser.get();// 更新实体对象的属性user.setAge(30);// 保存更新后的实体对象到数据库userRepository.save(user);
}

删除数据:

// 根据ID删除实体对象
userRepository.deleteById(1L);

查询数据:

// 根据ID获取实体对象
Optional<User> optionalUser = userRepository.findById(1L);
if (optionalUser.isPresent()) {User user = optionalUser.get();System.out.println(user.getName());
}// 查询所有实体对象
List<User> userList = userRepository.findAll();
for (User user : userList) {System.out.println(user.getName());
}// 自定义查询方法
List<User> userList = userRepository.findByAgeGreaterThan(20);
for (User user : userList) {System.out.println(user.getName());
}

以上示例演示了基本的插入、更新、删除和查询操作。使用Spring Data JPA,您可以通过调用Repository接口中提供的方法来执行这些操作,而无需编写底层的SQL语句。您还可以根据自己的需求,使用注解和查询注解来定义更复杂的查询方法。

使用原生SQL:

// 利用原生的SQL进行查询操作
@Query(value = "select o.* from orders o ,user u where o.uid=u.id and u.name=?1", nativeQuery = true)
@Modifying
public List<Order> findOrderByName(String name);// 利用原生的SQL进行删除操作
@Query(value = "delete from orders where id=?1 ", nativeQuery = true)
@Modifying
public void deleteOrderById(int id);// 利用原生的SQL进行删除操作
@Query(value = "delete from orders where uid=?1 ", nativeQuery = true)
@Modifying
public void deleteOrderByUId(int uid);// 利用原生的SQL进行修改操作
@Query(value = "update orders set name=?1 where id=?2 ", nativeQuery = true)
@Modifying
public void updateOrderName(String name,int id);// 利用原生的SQL进行插入操作
@Query(value = "insert into orders(name,uid) value(?1,?2)", nativeQuery = true)
@Modifying
public void insertOrder(String name,int uid);

这些命令用于在JPA中使用原生SQL进行数据库表的操作。

实现分页功能:

Page<User> findByNameNot(String name, Pageable pageable);

这个命令用于在JPA中实现根据条件分页查询。


那日观海,我从未看海

http://www.lryc.cn/news/99665.html

相关文章:

  • Excel的使用
  • 大数据课程D4——hadoop的MapReduce
  • java策略模式
  • Vue2封装自定义全局Loading组件
  • docker 搭建jenkins
  • 【Docker】Docker 部署 Mysql 并设置数据持久化
  • 【ARM 常见汇编指令学习 5 -- arm64汇编指令 wzr 和 xzr】
  • 4.4 成员变量与局部变量的区别有哪些?
  • 学生管理系统-03项目案例(3)
  • Banana Pi BPI-KVM – 基于 Rockchip RK3568 SoC 的 KVM over IP 解决方案
  • 面试:Spring Cloud和Kubernetes的优缺点
  • TSINGSEE青犀视频安防监控视频平台EasyCVR新增密码复杂度提示
  • 前端开发中的正则表达式:解密规则的魔法
  • const的用法
  • 机器学习深度学习——模型选择、欠拟合和过拟合
  • IP 服务级别协议监控
  • Emvirus: 基于 embedding 的神经网络来预测 human-virus PPIs【Biosafety and Health,2023】
  • 安全文件传输:如何降低数据丢失的风险
  • AI绘画StableDiffusion实操教程:可爱头像奶茶小女孩(附高清图片)
  • java8 GroupingBy 用法大全
  • vue_router__WEBPACK_IMPORTED_MODULE_1__.default is not a constructor
  • 前端html2canvas和dom-to-image实现截图功能
  • Hadoop平台集群之间Hive表和分区的导出和导入迁移(脚本)
  • Linux C语言实践eBPF
  • 垃圾回收标记阶段算法
  • 泰晓科技发布 Linux Lab v1.2 正式版
  • 王道数据结构-代码实操1(全注解版)
  • flink写入到kafka 大坑解析。
  • MATLAB算法实战应用案例精讲-【深度学习】预训练模型-Subword
  • 【HarmonyOS】实现从视频提取音频并保存到pcm文件功能(API6 Java)