GitHub

src="//ghbtns.com/github-btn.html?user=je-ge&repo=jpa&type=watch&count=true" scrolling="0" width="110" height="20">

需求

设计的国际化网站,页面需要输入firstName,lastName,后台数据库只需要存储name属性。
页面获取的firstName,lastName持久化到数据库name属性,规则按照,分隔保存。
防止错误修改,模型里面的name属性不提供getter,setter方法。

ddl语句

CREATE TABLE `t_user` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`birthday` datetime DEFAULT NULL,`name` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

User

package com.jege.jpa.primary;import java.util.Date;import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.PostLoad;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Table;
import javax.persistence.Transient;/*** @author JE哥* @email 1272434821@qq.com* @description:自动把firstName+lastName合并为name*/
@Entity
@Table(name = "t_user")
@Access(AccessType.FIELD)
public class User {@Id@GeneratedValueprivate Long id;@Column(name = "name", unique = true)private String name;private Date birthday;@Transientprivate String firstName;@Transientprivate String lastName;@PostLoadprivate void load() {if (name != null) {String[] names = name.split(",");firstName = names[0];lastName = names[1];}}@PrePersist@PreUpdateprivate void save() {if (firstName != null && !"".equals(firstName)) {name = firstName + ",";}if (lastName != null && !"".equals(lastName)) {name += lastName;}}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", birthday=" + birthday + ", firstName=" + firstName + ", lastName="+ lastName + "]";}}

MainTest

package com.jege.jpa.primary;import java.util.Date;import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;/*** @author JE哥* @entityManagerail 1272434821@qq.com* @description:自动把firstName+lastName合并为name测试*/
public class MainTest {private static EntityManagerFactory entityManagerFactory = null;private EntityManager entityManager = null;@BeforeClasspublic static void setUpBeforeClass() throws Exception {entityManagerFactory = Persistence.createEntityManagerFactory("com.jege.jpa");}@Beforepublic void setUp() throws Exception {entityManager = entityManagerFactory.createEntityManager();}@Testpublic void persist() throws Exception {User user = new User();user.setBirthday(new Date());user.setFirstName("西门");user.setLastName("吹雪");entityManager.getTransaction().begin();entityManager.persist(user);entityManager.getTransaction().commit();}@Afterpublic void tearDown() throws Exception {if (entityManager != null && entityManager.isOpen()) {entityManager.close();}}@AfterClasspublic static void tearDownAfterClass() throws Exception {if (entityManagerFactory != null && entityManagerFactory.isOpen()) {entityManagerFactory.close();}}
}

源码地址

https://github.com/je-ge/jpa

如果觉得我的文章或者代码对您有帮助,可以请我喝杯咖啡。
您的支持将鼓励我继续创作!谢谢!

JPA 菜鸟教程 18 自动把firstName+lastName合并为name字段相关推荐

  1. JPA 系列教程18-自动把firstName+lastName合并为name字段

    需求 设计的国际化网站,页面需要输入firstName,lastName,后台数据库只需要存储name属性. 页面获取的firstName,lastName持久化到数据库name属性,规则按照,分隔保 ...

  2. 菜鸟教程 之 JavaScript 教程

    From:菜鸟教程 JavaScript:https://www.runoob.com/ W3School JavaScript 教程:http://www.w3school.com.cn/js/in ...

  3. JS 基础知识之菜鸟教程(2016-09-30)

    //2016-09-30 重读菜鸟教程上JS教程同时摘录重要知识点 1.JavaScript 输出几种方式:使用 window.alert() 弹出警告框.使用 document.write() 方法 ...

  4. java script 菜鸟教程_JS 基础知识之菜鸟教程(2016-09-30)

    //2016-09-30 重读菜鸟教程上JS教程同时摘录重要知识点 1.JavaScript 输出几种方式: 使用 window.alert() 弹出警告框. 使用 document.write() ...

  5. JavaScript 菜鸟教程阅读笔记+总结+源码

    文章简介 本文是我在 Runoob.com 菜鸟教程上的总结与学习笔记. 除了引用 菜鸟教程上的内容之外,我添加了许多它没有介绍,但是也很重要的内容. 另外,我对 JavaScript 的内容进行了重 ...

  6. 菜鸟教程 之 JavaScript 函数(function)

    From:https://www.runoob.com/js/js-function-definition.html JavaScript 函数定义 JavaScript 使用关键字 function ...

  7. php validate,jQuery Validate | 菜鸟教程

    jQuery Validate jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方 ...

  8. Vue.js 教程---菜鸟教程

    文章目录 教程 安装 起步 模板语法 插值 指令 用户输入 过滤器 缩写 条件语句 循环语句 计算属性 监听属性 样式绑定 事件处理器 表单 组件 组件 - 自定义事件 自定义指令 钩子 路由( vu ...

  9. 一、个人总结的菜鸟教程|sql教程的知识点(SQL教程)

    一.SQL教程 1.SQL语法 DML select查询数据 update更新数据 delete删除数据 insert into插入数据 DDL create database创建数据库表 alter ...

最新文章

  1. php计算有多少页,PHP 计算页面执行时间
  2. 手机之家在线签名_选择苹果企业签名的原因有哪些?
  3. ES6的这些操作技巧,你会吗?
  4. linux 卡在grub_详解ubuntu双系统启动时卡死解决办法
  5. Java集合LinkedHashMap
  6. Win10/Win7小技巧:教你如何彻底关闭系统进程
  7. linux pxe安装视频,Linux—图解PXE实现全自动安装系统(1)
  8. [转]undefined reference to 问题解决方法
  9. 如何使用JS来改变CSS样式
  10. matlab鲍威尔法(Powell)
  11. 为CMUSphinx训练声学模型教程手册
  12. 人脸识别 数据集 与竞赛
  13. logistic模型 matlab,用matlab绘制logistic模型图.ppt
  14. vue 中基于drag drop拖放实现左菜单和右画布的功能
  15. .NET:持续进化的统一开发平台
  16. BNN - 基于low-bits量化压缩的跨平台深度学习框架
  17. css浏览器兼容性的问题
  18. 李迟2022年5月工作生活总结
  19. 程序莫名其妙的错误,怎么办?
  20. 冬季旅行系列后期调色lr预设

热门文章

  1. matplotlib绘图案例
  2. 职场必备的五款有格调的办公软件 让你从此呼风唤雨
  3. MySQL5.7中英对照文档_用户变量 User-Defined Variables
  4. 构建混合型ARM Kubernetes集群
  5. centos7的密码、用户和组管理
  6. JMeter 最大并发数
  7. 2012-2013 Asia Tokyo Regional (ABCDFGI)
  8. 【word毕业论文排版(2)】拼写检查
  9. 【电子负载维修】电子负载常见故障及解决办法
  10. K8S之Deployment控制器管理应用(十一)