为什么80%的码农都做不了架构师?>>>   

JPA Audit

在spring jpa中,支持在字段或者方法上进行注解@CreatedDate@CreatedBy@LastModifiedDate@LastModifiedBy,从字面意思可以很清楚的了解,这几个注解的用处。

  • @CreatedDate
    表示该字段为创建时间时间字段,在这个实体被insert的时候,会设置值
  • @CreatedBy
    表示该字段为创建人,在这个实体被insert的时候,会设置值

  • @LastModifiedDate@LastModifiedBy同理。

如何使用?

首先申明实体类,需要在类上加上注解@EntityListeners(AuditingEntityListener.class),其次在application启动类中加上注解EnableJpaAuditing,同时在需要的字段上加上@CreatedDate@CreatedBy@LastModifiedDate@LastModifiedBy等注解。

这个时候,在jpa.save方法被调用的时候,时间字段会自动设置并插入数据库,但是CreatedBy和LastModifiedBy并没有赋值,因为需要实现AuditorAware接口来返回你需要插入的值。

  • Application
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.annotation.Import;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;@SpringBootApplication
@EnableJpaAuditing
public class WalletApplication {public static void main(String[] args) {new SpringApplicationBuilder(WalletApplication.class).web(true).run(args);}
}
  • AuditorAware
import org.springframework.context.annotation.Configuration;
import org.springframework.data.domain.AuditorAware;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;@Configuration
public class UserIDAuditorBean implements AuditorAware<Long> {@Overridepublic Long getCurrentAuditor() {SecurityContext ctx = SecurityContextHolder.getContext();if (ctx == null) {return null;}if (ctx.getAuthentication() == null) {return null;}if (ctx.getAuthentication().getPrincipal() == null) {return null;}Object principal = ctx.getAuthentication().getPrincipal();if (principal.getClass().isAssignableFrom(Long.class)) {return (Long) principal;} else {return null;}}
}
  • Entity
import java.util.Date;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.Table;import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;/*** 店铺与支付渠道设备绑定.* @author Wang.ch**/
@Entity
@Table(name = "store_source_bind")
@EntityListeners(AuditingEntityListener.class)
public class StoreSourceBind {/*** 创建时间*/@Column(name = "create_time")@CreatedDateprivate Date createTime;/*** 创建人*/@Column(name = "create_by")@CreatedByprivate Long createBy;/*** 修改时间*/@Column(name = "lastmodified_time")@LastModifiedDateprivate Date lastmodifiedTime;/*** 修改人*/@Column(name = "lastmodified_by")@LastModifiedByprivate String lastmodifiedBy;
}

转载于:https://my.oschina.net/ohalo/blog/906650

Spring JPA 使用@CreatedDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy 自动生成时间和修改者...相关推荐

  1. mysql修改字段为现在时间_mysql如何修改字段自动生成时间

    mysql修改字段自动生成时间的方法:1.添加CreateTime设置默认时间:2.修改CreateTime设置默认时间:3.添加UpdateTime设置默认时间. 本教程操作环境:windows7系 ...

  2. DWZ 用dialog调用MVC自动生成的密码修改页面一直出现“数据加载中,请稍等...”和去掉“数据加载中,请稍等”的方法

    在MVC框架中调用JS框架<DWZ富客户端框架>在用dialog调用自动MVC系统自动生成的密码修改页面一直出现"数据加载中,请稍等..."的问题. <a tit ...

  3. Spring Data JPA使用必备(二):Spring Data JPA方法命名规则实现SQL自动生成

    Spring data JPA是一个好东西,但是对于很多习惯于写SQL,直接怼数据库的人来说,这个真的用不习惯,还被一致认为是一个不易于程序员发展的技术.因为JPA提供了标准的封装,在操作数据库的时候 ...

  4. Spring Boot (七)MyBatis代码自动生成和辅助插件

    一.简介 1.1 MyBatis Generator介绍 MyBatis Generator 是MyBatis 官方出品的一款,用来自动生成MyBatis的 mapper.dao.entity 的框架 ...

  5. 【Spring框架家族】mybatis generator代码自动生成(看得上眼直接拿去用即可)

    小工具,直接上代码,有大佬看的上,拿去复制改改相关参数就好 基于idea上使用的 pom文件 <build><plugins><plugin><groupId ...

  6. powerdesigner自动生成代码的修改

    powerdesigner自动生成代码的功能很是强大,但有时候不是很符合我们的想法,因此需要对其模板进行一些修改,如要将数据库中的表生成类文件时,我们需要的是property,但其为我们生成的代码里没 ...

  7. mysql更新表时自动生成时间和更新时间

    背景:在操作数据库表时,需要自动记录插入,更新操作时间. 一:在建表语句加上: --设置插入自动加入时间 DEFAULT CURRENT_TIMESTAMP --设置更新自动更新时间 DEFAULT ...

  8. MyEclipse自动生成注释,修改注释模板

    以下学习过程中的笔记,部分内容来自网络和书籍.一方便以后查阅,二希望能帮助到别人,三希望高手指点. 用Myeclipse开发项目是,自动生成注释十分方便快捷,但我们希望自动生成自己的名字和一些内容,同 ...

  9. 给EF框架自动生成实体类修改名字

    给EF框架自动生成实体类名字一般以T_ 开头,不符合我们给实体类起的名字这个时候如何进行修改呢? 右击2 选择属性 将属性中的实体集名称和名称改成自己想要的样子就可以啦~ 然后点击重新生成解决方案,我 ...

  10. Spring Boot入门(15):Spring Boot 整合 MyBatis-Plus AutoGenerator代码生成器实现自动生成项目骨架代码 | 超级详细,建议收藏

    1. 写在前面

最新文章

  1. java git服务器_windowsServer服务器上搭建GIt服务器
  2. 关于 equals 和 hashCode,看这一篇真的够了!
  3. [vim]高亮查找匹配
  4. 数学--数论--广义欧拉降幂(模板)
  5. 手机能打开的表白代码_手机拍照还能加文字?打开这个自带按钮,一键就能添加方便...
  6. BinderHub 使用简介
  7. zabbix-通过自动注册自动添加主机
  8. 萌新的Python练习菜鸟100例(八)输出 9*9 乘法口诀表
  9. 《遗传算法原理及应用》笔记—绪论
  10. 俞扬 新书_哇,太好了...新书
  11. Web前端开发(一)--html基本结构,基本标签
  12. [GAMES101]现代计算机图形学课程总结2:光栅化和反走样
  13. 学java,报班还是自学?
  14. CH340 和 CH341 使用心得
  15. 【DIP/数字图像处理】第二次习题(DCT、DFT、DWT、DHT频谱分布;证明DFT平移性质;ILF与BLF的区别)
  16. spool模式导出数据库指定表的数据到Excel
  17. 问题:The given artifact contains a string literal with a package reference 'andro
  18. 用UltraISO制作CentOS U盘安装盘
  19. google翻译的用法 使用translate.google.com翻译整个网页内容
  20. chrome浏览器,谷歌浏览器卡顿解决方法

热门文章

  1. Python open()函数文件打开、读、写基础操作
  2. WinForm主窗口框架的设计
  3. linux上openmp测试
  4. Android 四大组件学习之BroadcastReceiver一
  5. Android 四大组件学习之Activity五
  6. ISO 15765-2
  7. HDU - 2047
  8. python怎么替换主干网络_无法将关键字“model”解析到字段中。活塞主干网.js
  9. 电脑手写输入法_5款好用的拼音输入法软件推荐
  10. 反转链表与分组反转链表