JPA 菜鸟教程 18 自动把firstName+lastName合并为name字段
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字段相关推荐
- JPA 系列教程18-自动把firstName+lastName合并为name字段
需求 设计的国际化网站,页面需要输入firstName,lastName,后台数据库只需要存储name属性. 页面获取的firstName,lastName持久化到数据库name属性,规则按照,分隔保 ...
- 菜鸟教程 之 JavaScript 教程
From:菜鸟教程 JavaScript:https://www.runoob.com/ W3School JavaScript 教程:http://www.w3school.com.cn/js/in ...
- JS 基础知识之菜鸟教程(2016-09-30)
//2016-09-30 重读菜鸟教程上JS教程同时摘录重要知识点 1.JavaScript 输出几种方式:使用 window.alert() 弹出警告框.使用 document.write() 方法 ...
- java script 菜鸟教程_JS 基础知识之菜鸟教程(2016-09-30)
//2016-09-30 重读菜鸟教程上JS教程同时摘录重要知识点 1.JavaScript 输出几种方式: 使用 window.alert() 弹出警告框. 使用 document.write() ...
- JavaScript 菜鸟教程阅读笔记+总结+源码
文章简介 本文是我在 Runoob.com 菜鸟教程上的总结与学习笔记. 除了引用 菜鸟教程上的内容之外,我添加了许多它没有介绍,但是也很重要的内容. 另外,我对 JavaScript 的内容进行了重 ...
- 菜鸟教程 之 JavaScript 函数(function)
From:https://www.runoob.com/js/js-function-definition.html JavaScript 函数定义 JavaScript 使用关键字 function ...
- php validate,jQuery Validate | 菜鸟教程
jQuery Validate jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方 ...
- Vue.js 教程---菜鸟教程
文章目录 教程 安装 起步 模板语法 插值 指令 用户输入 过滤器 缩写 条件语句 循环语句 计算属性 监听属性 样式绑定 事件处理器 表单 组件 组件 - 自定义事件 自定义指令 钩子 路由( vu ...
- 一、个人总结的菜鸟教程|sql教程的知识点(SQL教程)
一.SQL教程 1.SQL语法 DML select查询数据 update更新数据 delete删除数据 insert into插入数据 DDL create database创建数据库表 alter ...
最新文章
- php计算有多少页,PHP 计算页面执行时间
- 手机之家在线签名_选择苹果企业签名的原因有哪些?
- ES6的这些操作技巧,你会吗?
- linux 卡在grub_详解ubuntu双系统启动时卡死解决办法
- Java集合LinkedHashMap
- Win10/Win7小技巧:教你如何彻底关闭系统进程
- linux pxe安装视频,Linux—图解PXE实现全自动安装系统(1)
- [转]undefined reference to 问题解决方法
- 如何使用JS来改变CSS样式
- matlab鲍威尔法(Powell)
- 为CMUSphinx训练声学模型教程手册
- 人脸识别 数据集 与竞赛
- logistic模型 matlab,用matlab绘制logistic模型图.ppt
- vue 中基于drag drop拖放实现左菜单和右画布的功能
- .NET:持续进化的统一开发平台
- BNN - 基于low-bits量化压缩的跨平台深度学习框架
- css浏览器兼容性的问题
- 李迟2022年5月工作生活总结
- 程序莫名其妙的错误,怎么办?
- 冬季旅行系列后期调色lr预设