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

第二百一十九节 JPA 教程 - JPA 字段映射示例

JPA 教程 - JPA 字段映射示例

当将 Java bean 字段映射到数据库列时,我们可以选择标记字段,标记 getter 方法并标记两者。

标记字段

以下代码来自 Professor.java。

它显示如何将主键列标记为 Java bean 字段标识。

package cn.w3cschool.common;
import javax.persistence.Entity;
import javax.persistence.Id;@Entity
public class Professor {@Idprivate int id;private String name;private long salary;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public long getSalary() {return salary;}public void setSalary(long salary) {this.salary = salary;}public String toString() {return "Employee id: " + getId() + " name: " + getName() + " salary: " + getSalary();}
}

下面的代码来自 PersonDaoImpl.java。

package cn.w3cschool.common;import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;import org.springframework.transaction.annotation.Transactional;@Transactional
public class PersonDaoImpl {public void test() {Professor emp = new Professor();emp.setId(1);emp.setName("name");emp.setSalary(12345);em.persist(emp);}@PersistenceContextprivate EntityManager em;
}

下载 Access_Field.zip

这里是运行代码后的数据库转储。

Table Name: PROFESSORRow:Column Name: ID,Column Type: INTEGER:Column Value: 1Column Name: NAME,Column Type: VARCHAR:Column Value: nameColumn Name: SALARY,Column Type: BIGINT:Column Value: 12345

标记属性 getter 方法

以下代码来自 Professor.java。

用于标记要用作数据库表主键列的字段的 @Id 注释将添加到 getter 方法。

package cn.w3cschool.common;
import javax.persistence.Entity;
import javax.persistence.Id;@Entity
public class Professor {private int id;private String name;private long wage;@Idpublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public long getSalary() {return wage;}public void setSalary(long salary) {this.wage = salary;}public String toString() {return "Employee id: " + getId() + " name: " + getName() + " salary: " + getSalary();}
}

下载 Access_Property.zip

以下是在运行上面的代码后的数据库转储。

Table Name: PROFESSORRow:Column Name: ID,Column Type: INTEGER:Column Value: 1Column Name: NAME,Column Type: VARCHAR:Column Value: nameColumn Name: SALARY,Column Type: BIGINT:Column Value: 12345

混合标记

使用 JPA,我们可以标记字段和 getter 方法。

以下代码来自 Professor.java。

package cn.w3cschool.common;import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;@Access(AccessType.FIELD)
@Entity
public class Professor {public static String LOCAL_AREA_CODE = "999";@Idprivate int id;@Transientprivate String phoneNum;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getPhoneNumber() {return phoneNum;}public void setPhoneNumber(String num) {this.phoneNum = num;}@Access(AccessType.PROPERTY)@Column(name = "PHONE")protected String getPhoneNumberForDb() {if (null != phoneNum && phoneNum.length() == 10)return phoneNum;elsereturn LOCAL_AREA_CODE + phoneNum;}protected void setPhoneNumberForDb(String num) {if (num.startsWith(LOCAL_AREA_CODE))phoneNum = num.substring(3);elsephoneNum = num;}
}

下面的代码来自 PersonDaoImpl.java。

package cn.w3cschool.common;import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;import org.springframework.transaction.annotation.Transactional;@Transactional
public class PersonDaoImpl {public void test() {Professor emp = new Professor();emp.setId(1);emp.setPhoneNumber("123456789");em.persist(emp);}@PersistenceContextprivate EntityManager em;
}

下载 Access_Mixed.zip

Table Name: PROFESSORRow:Column Name: ID,Column Type: INTEGER:Column Value: 1Column Name: PHONE,Column Type: VARCHAR:Column Value: 999123456789

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

相关文章:

  • 目标检测-YOLOv6
  • Java面向对象与多态
  • redis分布式锁和lua脚本
  • 项目实战 ---- 商用落地视频搜索系统(5)---service层核心
  • Win32远线程注入
  • CTF 竞赛密码学方向学习路径规划
  • 2024数学建模国赛B题代码
  • PyTorch 卷积层详解
  • 【Kubernetes知识点问答题】kubernetes 控制器
  • Patlibc———更快捷的更换libc
  • 基于飞腾平台的Hive的安装配置
  • c# json使用
  • 单点登录:cas单点登录实现原理浅析
  • java报错
  • uniapp动态页面API
  • 最优化方法Python计算:求解约束优化问题的拉格朗日乘子算法
  • 每日OJ_牛客_骆驼命名法(递归深搜)
  • MySQL 数据库管理与操作指南
  • Android Manifest 权限描述大全对照表
  • Ollama Qwen2 支持 Function Calling
  • APP测试工程师岗位面试题
  • 如何进行 AWS 云监控
  • 第十六篇:走入计算机网络的传输层--传输层概述
  • 提升效率!ArcGIS中创建脚本工具
  • 无人机之报警器的作用
  • 风格控制水平创新高!南理工InstantX小红书发布CSGO:简单高效的端到端风格迁移框架
  • python文件自动化(4)
  • HTTP 方法
  • 通过redis-operator 来部署 Redis Cluster 集群
  • vue3集成sql语句编辑器