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


    需求

    设计的国际化网站,页面需要输入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

    如果觉得我的文章对您有帮助,请打赏支持。您的支持将鼓励我继续创作!谢谢!
    微信打赏
    支付宝打赏

  • 相关阅读:
    网页安装ipa
    windows开通https服务
    Asp.Net上传大文件带进度条swfupload
    Asp.Net采集网页方法大全(5种)
    asp.net上传大文件-请求筛选模块被配置为拒绝超过请求内容长度的请求
    在IIS服务器上屏蔽IP的访问
    网络广告CPS/CPC/CPV/CPM/CPA分别是什么意思
    Asp.Net判断字符是否为汉字的方法大全
    Asp.Net使用代理IP远程获取数据
    Asp.Net保存session的三种方法
  • 原文地址:https://www.cnblogs.com/je-ge/p/6243276.html
Copyright © 2020-2023  润新知