Spring Data Jpa 使用EntityManager执行SQL操作数据

本文主要是介绍Spring Data Jpa 使用EntityManager执行SQL操作数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用EntityManager执行原生SQL语句可以通过createNativeQuery方法实现。以下是一个简单的例子,演示如何使用EntityManager执行SQL语句进行数据库操作。

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.Transactional;
import java.util.List;@Transactional
public class MyService {@PersistenceContext//@Autowiredprivate EntityManager entityManager;// 插入数据public void insertData(String name, int age) {String sql = "INSERT INTO person (name, age) VALUES (?, ?)";entityManager.createNativeQuery(sql).setParameter(1, name).setParameter(2, age).executeUpdate();}// 查询数据public List<Object[]> getAllPersons() {String sql = "SELECT * FROM person";return entityManager.createNativeQuery(sql).getResultList();}// 带查询条件的查询。my_entity_table是表名,status是表字段名public List<MyEntity> findEntitiesWithStatus(String status) {String sql = "SELECT * FROM my_entity_table WHERE status = :status";return entityManager.createNativeQuery(sql, MyEntity.class).setParameter("status", status).getResultList();}// 更新数据public void updatePersonAge(String name, int newAge) {String sql = "UPDATE person SET age = ? WHERE name = ?";entityManager.createNativeQuery(sql).setParameter(1, newAge).setParameter(2, name).executeUpdate();}// 删除数据public void deletePerson(String name) {String sql = "DELETE FROM person WHERE name = ?";entityManager.createNativeQuery(sql).setParameter(1, name).executeUpdate();}
}

@PersistenceContext和@Autowired都是用于依赖注入的注解,但它们的使用场景和依赖关系略有不同。
@PersistenceContext:
专门用于注入EntityManager,这是Java Persistence API (JPA) 的一部分,用于与持久性上下文(数据库)进行交互。
更为特定于JPA,通常在JPA或Hibernate等ORM框架的应用中使用。

在这个例子中,我们使用了createNativeQuery方法来创建原生SQL查询,并通过setParameter方法设置参数。executeUpdate方法用于执行更新、插入和删除操作,而getResultList方法用于执行查询操作。

请注意,这里使用的是原生SQL,因此表名和字段名需要与数据库中的实际情况一致。在实际开发中,为了防止SQL注入等安全问题,最好使用参数化查询,就像上面的例子一样使用setParameter方法。

此外,建议在Spring Boot应用程序中使用Spring Data JPA,因为它提供了更高级、更安全的查询方式,并且更符合Spring的习惯。只有在需要执行复杂的原生SQL操作时,才应考虑使用EntityManager执行原生SQL。

这篇关于Spring Data Jpa 使用EntityManager执行SQL操作数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/576444

相关文章

Swagger2与Springdoc集成与使用详解

《Swagger2与Springdoc集成与使用详解》:本文主要介绍Swagger2与Springdoc集成与使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1. 依赖配置2. 基础配置2.1 启用 Springdoc2.2 自定义 OpenAPI 信息3.

mysql中的group by高级用法详解

《mysql中的groupby高级用法详解》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,本文给大家介绍mysql中的groupby... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

java对接第三方接口的三种实现方式

《java对接第三方接口的三种实现方式》:本文主要介绍java对接第三方接口的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录HttpURLConnection调用方法CloseableHttpClient调用RestTemplate调用总结在日常工作

Golang interface{}的具体使用

《Golanginterface{}的具体使用》interface{}是Go中可以表示任意类型的空接口,本文主要介绍了Golanginterface{}的具体使用,具有一定的参考价值,感兴趣的可以了... 目录一、什么是 interface{}?定义形China编程式:二、interface{} 有什么特别的?✅

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

宝塔安装的MySQL无法连接的情况及解决方案

《宝塔安装的MySQL无法连接的情况及解决方案》宝塔面板是一款流行的服务器管理工具,其中集成的MySQL数据库有时会出现连接问题,本文详细介绍两种最常见的MySQL连接错误:“1130-Hostisn... 目录一、错误 1130:Host ‘xxx.xxx.xxx.xxx’ is not allowed

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

Spring 缓存在项目中的使用详解

《Spring缓存在项目中的使用详解》Spring缓存机制,Cache接口为缓存的组件规范定义,包扩缓存的各种操作(添加缓存、删除缓存、修改缓存等),本文给大家介绍Spring缓存在项目中的使用... 目录1.Spring 缓存机制介绍2.Spring 缓存用到的概念Ⅰ.两个接口Ⅱ.三个注解(方法层次)Ⅲ.

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3