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

第二百二十一节 JPA教程 - JPA按ID查找示例

JPA教程 - JPA按ID查找示例

一旦我们将实体保存到数据库中,我们可以通过使用EntityManager中的find方法来检索它们。

以下代码显示如何使用find方法与实体id。

Person emp =  em.find(Person.class, 1L);

例子

下面的代码来自Person.java。

package cn.w3cschool.common;
import static javax.persistence.FetchType.LAZY;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;

@Entity
@Table(name="EMP")
public class Person {
  @Id
  @Column(name = "EMP_ID")
  private long id;
  
  @Basic
  private String name;
  private String surname;
  
  @Lob 
  @Basic(fetch=LAZY)
  private byte[] picture;
  
  public Person() {}

  public Person(String name, String surname) {
    this.name = name;
    this.surname = surname;
  }
  
  public Long getId() {
    return id;
  }
  public void setId(Long id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getSurname() {
    return surname;
  }
  public void setSurname(String surname) {
    this.surname = surname;
  }
  
  public byte[] getPicture() {
    return picture;
  }

  public void setPicture(byte[] picture) {
    this.picture = picture;
  }

  @Override
  public String toString() {
    return "Person [id=" + id + ", name=" + name + ", surname=" + surname + "]";
  }
}

下面的代码来自PersonDaoImpl.java。

package cn.w3cschool.common;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.transaction.annotation.Transactional;

@Transactional
public class PersonDaoImpl {
  public void test(){
    Person p1 = new Person("Tom", "Smith");
    p1.setId(1L);
    p1.setPicture("asdf".getBytes());
    Person p2 = new Person("Jack", "Kook");
    p2.setId(2L);
    p1.setPicture("www.w3cschool.cn".getBytes());
    
    save(p1);
    save(p2);

    listAll();
    
    Person emp =  em.find(Person.class, 1L);
    if (emp != null) {
      em.remove(emp);
    }
    listAll();
  }
  private void listAll(){
    List<Person> persons = getAll();
    for (Person person : persons) {
      System.out.println(person);
    }

  }
  @PersistenceContext
  private EntityManager em;
  
  
  public Long save(Person person) {
    em.persist(person);
    return person.getId();
  }
  
  public List<Person>getAll() {
    return em.createQuery("SELECT p FROM Person p", Person.class).getResultList();
  }
  
}

下载 Find_By_ID.zip

上面的代码生成以下结果。

以下是数据库转储。

Table Name: EMP
 Row:
    Column Name: EMP_ID,
    Column Type: BIGINT:
    Column Value: 2

    Column Name: NAME,
    Column Type: VARCHAR:
    Column Value: Jack

    Column Name: PICTURE,
    Column Type: BLOB:
    Column Value: null

    Column Name: SURNAME,
    Column Type: VARCHAR:
    Column Value: Kook


 


http://www.kler.cn/a/298354.html

相关文章:

  • 文心一言 VS 讯飞星火 VS chatgpt (340)-- 算法导论23.1 9题
  • 华为 HCIP-Datacom H12-821 题库 (15)
  • jmeter压力测试,通过LLM利用RAG实现知识库问答,NEO4J部署,GraphRAG以知识图谱在查询时增强提示实现更准确的知识库问答(9/7)
  • FFmpeg 7.0 版本 “Dijkstra”的特点概述
  • docker-compose安装mysql8集群
  • 【数据结构-二维前缀和】力扣1504. 统计全 1 子矩形
  • 数据集 HO3D一种用于手和物体姿态的3D数据 >> DataBall
  • mysql 限制用户登录次数超过3次就 锁定账户在一段时间内不运行操作
  • 一款免费的智能关机软件,定时计划工具
  • VSCode 常用快捷键总结
  • 对话万兴科技副总裁朱伟:2024年将迎来AI视频年
  • vscode 使用git bash,路径分隔符缺少问题
  • image.size()和image.shape包含的信息一样,那image.size()存在的意义是什么?
  • SimD:基于相似度距离的小目标检测标签分配
  • linux中vim介绍以及常用命令大全
  • 【JavaWeb】JDBCDruidTomcat入门使用
  • 动态单窗口IP代理:提升网络操作的灵活性和安全性
  • java八股!3
  • 调度算法及其性能指标
  • 【Rust】007-包管理与模块管理