JPA 菜鸟教程 18 自动把firstName+lastName合并为name字段
来源:互联网 发布:java时间格式hhmmssnnn 编辑:程序博客网 时间:2024/04/29 06:02
GitHub
需求
设计的国际化网站,页面需要输入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 @GeneratedValue private Long id; @Column(name = "name", unique = true) private String name; private Date birthday; @Transient private String firstName; @Transient private String lastName; @PostLoad private void load() { if (name != null) { String[] names = name.split(","); firstName = names[0]; lastName = names[1]; } } @PrePersist @PreUpdate private 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; } @Override public 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; @BeforeClass public static void setUpBeforeClass() throws Exception { entityManagerFactory = Persistence.createEntityManagerFactory("com.jege.jpa"); } @Before public void setUp() throws Exception { entityManager = entityManagerFactory.createEntityManager(); } @Test public 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(); } @After public void tearDown() throws Exception { if (entityManager != null && entityManager.isOpen()) { entityManager.close(); } } @AfterClass public static void tearDownAfterClass() throws Exception { if (entityManagerFactory != null && entityManagerFactory.isOpen()) { entityManagerFactory.close(); } }}
源码地址
https://github.com/je-ge/jpa
如果觉得我的文章或者代码对您有帮助,可以请我喝杯咖啡。
您的支持将鼓励我继续创作!谢谢!
0 0
- JPA 菜鸟教程 18 自动把firstName+lastName合并为name字段
- iOS开发- 添加地址从通讯录中选择添加(firstName,lastName真机为nil,模拟器正常)
- SELECT p.LastName, p.FirstName FROM Persons AS p
- latex: Change ieetran.bst bibliography style lastname before firstname
- JPA 菜鸟教程 异常 集锦
- JPA为字段设置默认值
- Spring Boot 菜鸟教程 2 Data JPA
- JPA 菜鸟教程 1 环境搭建
- JPA 菜鸟教程 2 单表操作
- JPA 菜鸟教程 4 单向一对多
- JPA 菜鸟教程 5 双向一对多
- JPA 菜鸟教程 20 JPA2.0 @CollectionTable
- JPA 菜鸟教程 21 JPA2.0 @MapKeyColumn
- mysql把多行数据合并为一行,并且字段名自己定义
- JPA 菜鸟教程 19 jpa uuid主键生成策略
- sql中怎样把同一张表中相同字段的内容合并为一条记录(合并的记录的后面不加逗号)?
- sql中怎样把同一张表中相同字段的内容合并为一条记录(不同字段的那一列每个记录后面加逗号)
- JPA 菜鸟教程 3 单向多对一
- Android性能调优利器StrictMode
- 里氏替换原则
- 客户端-----元素md
- jquery 效果
- [CSS]CSS浮动float详解(二):使用float
- JPA 菜鸟教程 18 自动把firstName+lastName合并为name字段
- C++ 11 rvalues, lvalues, xvalues, glvalues, prvalues 是什么
- 【git】RPC failed; result=56, HTTP code = 200错误解决
- 客户端---样式表md
- macOS && Xcode8安装RVM,安装Ruby,安装/卸载Cococapods全程详解
- 1613-3-傅溥衍 总结《2016年12月15日》【连续第七十六天总结】
- 文件夹共享注意事项
- android代码中获取view的宽高方式
- 正则表达式(Regex)