有些业务数据需要对数据的创建人、创建时间、最后更新人和最后更新时间进行记录。如果使用Spring Data Jpa做数据新增或更新,可实现自动保存这些信息而不需要显式设置对应字段的值。...实现自动记录上述信息主要有5个注解: @EnableJpaAuditing:审计功能开关 @CreatedBy:标记数据创建者属性 @LastModifiedBy:标记数据最近一次修改者属性 @CreatedDate...:标记数据创建日期属性 @LastModifiedDate:标记数据最近一次修改日期属性 依赖引用 使用Spring Data JPA要引用依赖spring-boot-starter-data-jpa...@CreatedBy @Column(name = "created_by") private String createdBy; //保存最近修改人的字段...@CreatedDate @Column(name = "created_date") //保存最近修改日期的字段 private Date createdDate;
在这篇文章中,我们将深入探讨 Spring Data、它的优点以及如何像专业人士一样使用它 说到 Spring 应用程序中的数据访问,开发人员经常会遇到 "Spring Data "和 "Spring...Spring Data JPA 是 Spring Data 项目中的一个特定模块,专门用于简化对支持 Java Persistence API (JPA) 的关系数据库的数据访问。...Spring Data JPA 支持审计功能,例如自动填充createdBy、createdDate、lastModifiedBy 和lastModifiedDate 字段。...LocalDateTime createdDate; @CreatedBy private String createdBy; @LastModifiedDate...private LocalDateTime lastModifiedDate; @LastModifiedBy private String lastModifiedBy; } 规范和标准查询
选择 Spring Data JPA 框架开发时,常用在实体和字段上的注解有@Entity、@Id、@Column等。在表设计规范中,通常建议保留的有两个字段,一个是更新时间,一个是创建时间。...Spring Data JPA 提供了相应的时间注解,只需要两步配置,就可以帮助开发者快速实现这方面的功能。...在实体类上加上注解 @EntityListeners(AuditingEntityListener.class),在相应的字段上添加对应的时间注解 @LastModifiedDate 和 @CreatedDate...Data JPA 还提供 @CreatedBy 和 @LastModifiedBy 注解,用于保存和更新当前操作用户的信息(如id、name)。...lastModifiedBy; // 省略getter和setter 配置实现AuditorAware接口,以获取字段需要插入的信息: @Configuration public class
基于注释的审计元数据 我们提供 CreatedBy 并 LastModifiedBy 操作创建或实体修改的用户,CreatedDate 并 LastModifiedDate 启动更改的时间。...示例75.一个被审计的实体 类客户{ 由...制作 私人用户用户; 创建日期 私人即时 createdDate; //...省略更多属性 } 如您可以有选择地注释,具体可用于您要应用的信息。...审计嵌入实体中的元数据 类客户{ 私有审计元数据审计元数据; //...省略更多属性 } 类审计元数据{ 由...制作 私人用户用户; 创建日期 私人即时 createdDate; } 7.1.2....审计员意识 如果您使用@CreatedBy 或@LastModifiedBy,审计基础结构需要以某种方式了解当前主体。...反应式审计员 使用反应式基础架构时,您可能希望使用上下文信息来提供@CreatedBy提供@LastModifiedBy信息。
仅跟踪创建和修改日期的应用程序不需要指定AuditorAware. 15.1.1.基于注解的审计元数据 我们提供@CreatedBy并@LastModifiedBy捕获创建或修改实体的用户,@CreatedDate...一个被审计的实体 class Customer { @CreatedBy private User user; @CreatedDate private Instant createdDate...它公开了所有审计属性的 setter 方法。 15.1.3.AuditorAware 如果您使用@CreatedBy或@LastModifiedBy,审计基础结构需要以某种方式了解当前主体。...泛型类型T定义了用什么类型注释的属性@CreatedBy或@LastModifiedBy必须是什么类型。...泛型类型T定义了用什么类型注释的属性@CreatedBy或@LastModifiedBy必须是什么类型。
--spring-data-jpa--> org.springframework.boot spring-boot-starter-data-jpa...审计功能的创建人和修改者的注入方式下一节再讲哦,贪多嚼不烂。...自动插入创建人 @CreatedDate 自动插入创建时间 @LastModifiedBy 自动修改更新人 @LastModifiedDate 自动修改更细时间 @Version 自动更新版本号...)这个注解,@CreatedBy、@CreatedDate 、@LastModifiedBy 、@LastModifiedDate才生效哦,而且创建人和更新人需要另作注入操作,此篇埋个伏笔。...banana修改成banana-update, objectVersion版本号因为@Version注解,从1变为了2, createdBy和createdDate别看没变,是因为前端传的字段中带了值,
基于注释的审计元数据 我们提供@CreatedBy并@LastModifiedBy捕获创建或修改实体的用户,@CreatedDate并@LastModifiedDate捕获更改发生的时间。...一个被审计的实体 class Customer { @CreatedBy private User user; @CreatedDate private Instant createdDate; //...} class AuditMetadata { @CreatedBy private User user; @CreatedDate private Instant createdDate; } 基于接口的审计元数据...它公开了所有审计属性的 setter 方法。 AuditorAware 如果您使用@CreatedBy或@LastModifiedBy,审计基础结构需要以某种方式了解当前主体。...通常,定义审计元数据的基于注释的方法是首选,因为它侵入性更小且更灵活。 5.1.10. JPA审计 常规审计配置 Spring Data JPA 附带一个实体侦听器,可用于触发审计信息的捕获。
序 本文主要研究一下Spring Data Auditable接口的变化 1.12.8.RELEASE版本 spring-data-commons-1.12.8.RELEASE-sources.jar!...* * @return the createdDate */ DateTime getCreatedDate(); /** * Sets the...(final DateTime lastModifiedDate); } 可以看到这个版本使用的joda-time的DateTime 2.0.7.RELEASE版本 spring-data-commons...* * @return the createdDate */ Optional getCreatedDate(); /** * Sets...(T lastModifiedDate); } 可以看到新版版本,去掉了强制依赖joda-time,改为在接口定义新增泛型来表达,该泛型要求实现TemporalAccessor接口 另外,返回值的类型都改为了
,把普通pojo实例化到spring容器中 3、@Service @Service用于标注业务层组件 4、@Repository @Repository用于标注数据访问组件,即DAO组件. 5、@Configuration...这意味着Spring Boot在类路径上寻找自动配置bean,并自动应用它们。...、@LastModifiedDate、@LastModifiedBy @CreatedDate 表示该字段为创建时间字段,在这个实体被insert的时候,会设置值 @CreatedBy 表示该字段为创建人...,在这个实体被insert的时候,会设置值 @LastModifiedDate 表示该字段为最后修改时间字段,在这个实体被insert,update的时候,会设置值 @LastModifiedBy 表示该字段为最后修改人...@LastModifiedBy private User modifyAt; @CreatedDate private Date createdDate
Spring Boot中Spring data注解的使用 Sring data JPA为我们提供了很多有用的注解,方便我们来实现各种复杂的功能。...Spring Data不仅可以用于JPA, 它还有很多其他的数据提供方,JPA只是其中的一个具体实现。...可以放在方法上,也可以放在class上面,如果放在class上面则说明该class中的所有方法都适用于Transactional。...@Transient int age; // ... } @CreatedBy, @LastModifiedBy, @CreatedDate, @LastModifiedDate...@CreatedBy User creator; @LastModifiedBy User modifier; @CreatedDate
审核工作由标注领域有@CreatedBy,@CreatedDate,@LastModifiedBy和@LastModifiedDate。持久化实体时,框架将自动在这些字段上注入正确的值。...要配置审计,首先需要在上下文中有一个审计感知 bean。所说的 bean 必须是类型的AuditorAware(允许产生一个可以存储在T我们之前看到的类型的 xxxBy 字段中的值)。...; @CreatedBy private String creator; @LastModifiedBy private String lastModifiedBy; @LastModifiedDate...Spring Data 存储库文档和您的模块 本章介绍 Spring Data 存储库的核心概念和接口。本章中的信息来自 Spring Data Commons 模块。...如果您将存储库抽象用于任何其他存储,则需要将其更改为存储模块的适当命名空间声明。换句话说,您应该交换jpa,例如,mongodb。
添加Spring boot支持,引入相关包: 1、maven工程,少不了pom.xml,spring boot的引入可参考官网: org.springframework.boot...classpath外边,方便在不重新打包的情况下修改,spring boot工程一般都打成jar包: import java.io.File; import java.io.FileInputStream...; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy...属性不能为空") public String name; @CreatedBy public String createBy; @CreatedDate...,update表示当实体类的属性发生变化时,表结构跟着更新, 这里我们也可以取值create,这个create表示启动的时候删除上一次生成的表,并根据实体类重新生成表, 这个时候之前表中的数据就会被清空
仅跟踪创建和修改日期的应用程序不需要指定AuditorAware. 13.1.1.基于注解的审计元数据 我们提供@CreatedBy并@LastModifiedBy捕获创建或修改实体的用户,@CreatedDate...一个被审计的实体 class Customer { @CreatedBy private User user; @CreatedDate private Instant createdDate...它公开了所有审计属性的 setter 方法。 13.1.3.AuditorAware 如果您使用@CreatedBy或@LastModifiedBy,审计基础结构需要以某种方式了解当前主体。...泛型类型T定义了用什么类型注释的属性@CreatedBy或@LastModifiedBy必须是什么类型。...泛型类型T定义了用什么类型注释的属性@CreatedBy或@LastModifiedBy必须是什么类型。
在单个实现类中组合多个实体回调接口。 9.11. 自定义转化 Spring Data JDBC 允许注册自定义转换器以影响值在数据库中的映射方式。目前,转换器仅应用于属性级别。 9.11.1....基于注释的审计元数据 我们提供@CreatedBy并@LastModifiedBy捕获创建或修改实体的用户,@CreatedDate并@LastModifiedDate捕获更改发生的时间。...一个被审计的实体 class Customer { @CreatedBy private User user; @CreatedDate private Instant createdDate; //...} class AuditMetadata { @CreatedBy private User user; @CreatedDate private Instant createdDate; } 基于接口的审计元数据...它公开了所有审计属性的 setter 方法。 AuditorAware 如果您使用@CreatedBy或@LastModifiedBy,审计基础结构需要以某种方式了解当前主体。
什么是多租户 网上有好多解释,有些上升到了架构设计,让你觉得似乎非常高深莫测,特别是目前流行的ABP架构中就有提到多租户(IMustHaveTenant),其实说的简单一点就是再每一张数据库的表中添加一个...TenantId的字段,用于区分属于不同的租户(或是说不同的用户组)的数据。...关键是现实的方式必须对开发人员来说是透明的,不需要关注这个字段的信息,由后台或是封装在基类中实现数据的筛选和更新。...接下来就是用户登录的时候获取用户信息的时候把TenantId保存起来,asp.net mvc(不是 core) 是通过 Identity 2.0实现的认证和授权,这里需要重写部分代码来实现。...auditableEntity.Entity.LastModifiedDate = currentDateTime; 37 auditableEntity.Entity.LastModifiedBy
@CreatedDate、@LastModifiedDate、@CreatedBy、@LastModifiedBy前两个注解就是起这个作用的,后两个是设置修改人和创建人的,这里先不讨论。...首先,我们的很多实体类都是需要创建时间和更新时间的,我们不想在每个实体类里都去定义这两个字段,那么我们把它抽取到基类中,让实体类去继承它。...做完这些,我们来测试一下,新建个Springboot项目,配置一下数据库信息 spring: jpa: database: mysql show-sql: true hibernate...org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest...然后试试update,将上面的update的注释放开。 ? 可以看到更新时间也自动修改了。 需注意,如果你没有修改任何字段的值的话,即便走了save方法,updateTime也是不会更改的。
在Spring Data框架中提供@CreatedBy和@LastModifiedBy来捕捉谁创建或修改的实体以及@CreatedDate和@LastModifiedDate来捕捉何时创建或修改了实体。...如果你使用相关的框架就可以使用这些特性。那么其实我们知道国内Spring Data JDBC、Spring Data JPA并不是主流,主流的是Mybatis。那么我们有哪些选择?...2.1 开发 Mybatis 审计插件 如果你使用了原生的Mybatis可以编写一个审计插件来实现这些功能。我在之前讲解过Mybatis插件的教程,并不是非常难的事。...总结 今天我们 SQL 审计中的一些公共字段的自动填充的常用方案进行了一些介绍,特别对Mybatis Plus提供的功能进行了介绍相信能够帮助你简化一些样板代码的编写。...但是 SQL 审计并不仅仅这么简单,根据你的业务的不同会有不同的设计。
在 Spring Data 框架中提供 @CreatedBy 和 @LastModifiedBy 来捕捉谁创建或修改的实体以及 @CreatedDate 和 @LastModifiedDate 来捕捉合适创建或修改了实体...如果你使用相关的框架就可以使用这些特性。那么其实我们知道国内 Spring Data JDBC 、 Spring Data JPA 并不是主流,主流的是 Mybatis 。那么我们有哪些选择?...2.1 开发Mybatis审计插件 如果你使用了原生的 Mybatis 可以编写一个审计插件来实现这些功能。我在之前讲解过 Mybatis 插件的教程,并不是非常难的事。...总结 今天我们SQL审计中的一些公共字段的自动填充的常用方案进行了一些介绍,特别对 Mybatis Plus 提供的功能进行了介绍相信能够帮助你简化一些样板代码的编写。...但是SQL审计并不仅仅这么简单,根据你的业务的不同会有不同的设计。
> spring-boot-starter-jdbc org.springframework.boot...>org.springframework.boot spring-boot-starter-test ...; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate...List-4.1 #保存name为Tom的用户 http://localhost:9092/serviceB/saveUser/Tom #查询Id为1的用户 http://localhost:9092.../serviceB/queryUser/1 一些思考: 自动创建表结构,我们不需要手动去创建,我们修改实体的时候,系统会自动更新数据库中的表结构。
领取专属 10元无门槛券
手把手带您无忧上云