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

news/2025/2/22 17:57:22/

使用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。


http://www.ppmy.cn/news/1297488.html

相关文章

docker jenkins NB: JAVA_HOME should point to a JDK not a JRE

jenkins java编译错误&#xff1a; 3.5.4/conf/settings.xml The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE Build step ‘Invoke top-level Maven t…

免费IDEA插件推荐:Apipost-Helper

IDEA插件市场中的API调试插件不是收费&#xff08;Fast Request &#xff09;就是不好用&#xff08;apidoc、apidocx等等&#xff09;今天给大家介绍一款国产的API调试插件&#xff1a;Apipost-Helper&#xff0c;完全免费且好看好用&#xff01; 这款插件由Apipost团队开发的…

IDEA git项目 tomcat Tomcat出现404,The requested resource is not available 原因分析

IDEA git项目 tomcat Tomcat出现404&#xff0c;The requested resource is not available 原因分析 前言 刚用 idea 来写java Web项目的时候 经常遇到Tomcat配置相关的问题&#xff0c;其中404 算是比较好解决的问题 目前我吧这几种情况归纳了主要4种情况 1.Project Module…

MySQL深入——9

如何正确的显示随机信息&#xff1f; 我们来模拟在英语单词app当中随机出现三个英语单词的情况&#xff0c;我们首先创建一张表words&#xff0c;然后给这个表当中插入10000条信息进行量化。 select word from words order by rand() limit 3&#xff1b; order by rand&…

SpringBoot-自定义监听器

Spring Boot提供了强大的事件模型&#xff0c;其中包括多种内置监听器&#xff0c;同时也支持开发者自定义监听器。通过实现ApplicationListener接口&#xff0c;开发者可以创建自己的监听器&#xff0c;并在Spring Boot应用程序中进行配置。这样一来&#xff0c;在特定的应用程…

从规则到神经网络:机器翻译技术的演化之路

在本文中&#xff0c;我们深入探讨了机器翻译的历史、核心技术、特别是神经机器翻译&#xff08;NMT&#xff09;的发展&#xff0c;分析了模型的优化、挑战及其在不同领域的应用案例。同时&#xff0c;我们还提出了对未来机器翻译技术发展的展望和潜在的社会影响。 一、概述 机…

k8s yaml文件pod的生命周期

Pod是k8s中最小限额资源管理组件&#xff0c;也是最小化运行容器化的应用的资源管理对象。 Pod是一个抽象的概念&#xff0c;可以理解为一个或者多个容器化应用的集合。 在一个pod当中运行一个容器是最常用的方式。 在一个pod当中同时运行多个容器&#xff0c;在一个pod当中…

婚庆小程序集成多商家管理以及总后台管理不再需要电脑一个小程序解决所有管理

#后台管理不需要电脑# #一个小程序搞定多商户# 啥也不说&#xff0c;先来个图片看看。新闻编辑&#xff0c;分类编辑&#xff0c;信息管理都不需要电脑来操作了。一切归顺于手机。一个小程序来解决。