首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Spring】AOP实现公共字段填充

公共字段自动填充 1.1 问题分析 在上一章节我们已经完成了后台系统的员工管理功能和菜品分类功能的开发,新增员工或者新增菜品分类时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工或者编辑菜品分类时需要设置修改时间...答案是可以的,我们使用AOP切面编程,实现功能增强,来完成公共字段自动填充功能。...1.2 实现思路 实现公共字段自动填充,也就是插入或者更新的时候为指定字段赋予指定的值,使用它的好处就是可以统一对这些字段进行处理,避免了重复代码。... Mapper 的方法加入 AutoFill 注解 若要实现上述步骤,需掌握以下知识(之前课程内容都学过) 技术点:枚举、注解、AOP、反射 1.3 代码开发 按照上一小节分析的实现步骤依次实现,共三步...,create_user,update_user字段都已完成自动填充

26110

Mybatis Plus 公共字段自动填充功能

这个时候我们就可以使用Mybatis Plus提供的公共字段自动填充功能。...2、 基本功能实现 Mybatis Plus公共字段自动填充,也就是插入或者更新的时候为指定字段赋予指定的值,使用它的好处就是可以统一对这些字段进行处理,避免了重复代码。...首先第一步就是实体类的属性加入 @TableField 注解,指定自动填充的策略。...注 : fill : 字段自动填充策略 添加好注解后,我们就需要按照框架要求编写元数据对象处理器这样的一个类,在此类中统一为公共字段赋值,注意!...3、功能完善 细心的朋友已经发现,我们上面只填充了时间,并没有填充创建人和更新人,现在我们就来完善一下。

1.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

SpringBoot项目中公共字段填充

​ 公共字段填充 思路: 利用的是SpringBoot的Aop思想和自定义注解和反射机制的方法来实现 项目中我涉及公共字段的有createTime、updateTime、createUser、updateUser...自定义注解AutoFill,用于标识需要进行公共字段自动填充的方法 /** * 数据库操作类型 使用的是枚举方法 */ public enum OperationType { ​    /**...* 更新操作     */    UPDATE, ​    /**     * 插入操作     */    INSERT ​ } /** * 自定义注解,用于标识某个方法需要进行功能字段自动填充处理...自定义切面类AutoFillAspect,统一拦截加入了AutoFill注解的方法,通过反射为公共字段赋值 /** * 自定义切面,实现公共字段字段填充处理逻辑 */ @Aspect @Component...Mapper的需要自动填充公共字段的方法加入AutoFill注解    @Insert("insert into category (type, name, sort, status, create_time

29740

黑马瑞吉外卖之公共字段自动填充

黑马瑞吉外卖之公共字段自动填充 公共字段填充的必要性就是当我们我们执行一些具体的操作的时候,我们需要更新字段,比如具体执行相应操作的时间,以及可能需要的更新或者修改者的id。...对需要做公共填充字段属性添加响应的注解。 比如这张用户表的实体类。 我们需要去使用到mybatisplus的一个接口。...MetaObjectHandler接口是mybatisPlus为我们提供的的一个扩展接口,我们可以利用这个接口我们插入或者更新数据的时候,为一些字段指定默认值。...ThreadLocal 叫做本地线程变量,意思是说,ThreadLocal 中填充的的是当前线程的变量,该变量对其他线程而言是封闭且隔离的,ThreadLocal 为变量每个线程中创建了一个副本,这样每个线程都可以访问自己内部的副本变量...这就是整个字段填充的过程。

68510

如何自动填充SQL语句中的公共字段

写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南Github,内容详细,图文并茂,有需要学习的朋友可以Star一下!...如何自动填充SQL语句中的公共字段 1. 前言 我们设计数据库的时候一定会带上新增、更新的时间、操作者等审计信息。...我之前讲解过 Mybatis 插件的教程,并不是非常难的事。如果你想拿来就用,其实 GitHub 提供了很多可供选择的 Mybatis 审计组件,本来我打算手写一个,但是确实人家写的好。...,当然你可以根据需要添加更多你需要填充字段。...总结 今天我们SQL审计中的一些公共字段的自动填充的常用方案进行了一些介绍,特别对 Mybatis Plus 提供的功能进行了介绍相信能够帮助你简化一些样板代码的编写。

2.2K30

如何自动填充creatTime和updateTime两种字段

1.mysql自带功能 首先是较为常见的,mysql数据库里设置,但是我的mysql版本不支持该方法,如果尝试了后报错了请直接看方法二 sql语句预览 createTime timestamp not...datetime  然后写一个元对象处理器方法 /** * 自定义元对象处理器,针对公共、重复字段进行自动填充 */ @Component public class MyMetaObjectHandler...MetaObject metaObject) { metaObject.setValue("updateTime",LocalDateTime.now()); } }  最后将要自动填充字段加上注解...并且注意一下属性类型(   LocalDateTime ) /** * 创建时间 */ @TableField(fill = FieldFill.INSERT) //插入和更新时填充字段...createTime; /** * 更新时间 */ @TableField(fill = FieldFill.INSERT_UPDATE) //插入和更新时填充字段

16610

Mybatis plus通用字段自动填充的最佳实践总结

进行持久层数据维护(新增或修改)的时候,我们通常需要记录一些非业务字段,比如:create_time、update_time、update_by、create_by等用来维护数据记录的创建时间、修改时间...一、调整数据库表结构 以mysql数据库环境下的xxx_yyy_zzz表为例,原有的表字段的基础,添加下面的四个通用数据维护字段。...fill = FieldFill.INSERT_UPDATE表示nsert或update操作的时候自动为该字段赋值 select = false表示使用Mybatis Wrapper条件构造器进行查询的时候...数据修改时间操作人通常对于运维更有意义,所以通常不需要展示web页面上,所以通常select查询的时候不包含它。...(这个内容与我们本机的字段自动填充没有太直接的联系,但是实际应用中是有意义的) 三、实体类的实现 下文实体类XxxYyyZzz对应数据库中的xxx_yyy_zzz表,除了以上四个通用字段,xxx_yyy_zzz

2.7K40

【分享】集简云架应用如何设置动作字段

如何设置动作字段开发者平台有多个地方需要设置字段,本文章将详细说明如何设置字段。什么是字段?它有什么用?...字段是用户要在前端填写的内容,可以应用授权,设置触发/执行动作时都需要设置,字段开发后台配置后,用户使用时可在前端看到对应的字段。...例如:开发者平台设置授权字段:用户使用应用并进行授权时,可以在前端看到对应字段并填写:开发者平台动作中设置的字段,用户使用时也会看到对应的字段内容并填写:开发者平台配置的字段:用户使用时前端看到对应的字段并填写...您可以代码模式中使用变量:应用授权字段应用的授权步骤配置的):{{auth_data.xxx}} , 其中 xxx部分为您在应用授权设置中设置的字段key动作字段 (在此动作中设置的普通字段字段...)tableIdOrName 是一个字段key, 代表表单ID动作中配置的,以变量形式插入时为{{input_data.tableIdOrName}},Coda的动作字段设置中以普通字段的形式已经添加

99630

SpringBoot-Mybatis_Plus学习记录之公共字段自动填充

二.配置MybatisPlus ---- 导包:只需要注意的一点就是,mybatisPlus是2.0.6版本才支持的更新数据公共字段自动填充,之前都是只支持新增数据的时候可以使用。...填充字段需要忽略验证,表对象pojo类的对应属性添加下面注解: /** * 最后修改人Id */ @TableField(value="last_update_id",validate=FieldStrategy.NOT_EMPTY...不然插入的时候就会填充失败。...的配置文件中公共字段生成类的bean //2.实现IMetaObjectHandler类 //3.忽略对应字段的为空检测,pojo类的属性添加@TableField(value="last_update_name_id...所以本人觉得这个mybatisPlus这个公共字段自动填充功能是不错,但是正真用的上的需求上面使用的时候还不够完善。

1.8K40

【分享】集简云架应用如何设置动作字段参数?

开发者平台应用授权和触发/执行字段时都会涉及到字段参数,我们介绍一下各个字段参数的配置。...应用授权时的字段参数设置界面:动作设置-添加普通字段时的字段参数设置界面:字段参数包括:字段Key:用于接口调用时的唯一字段标识,字段key应该为英文字母,例如API_Key。...,需要填写格式字段说明中。...字段类型:字段类型决定此字段字段接口中以什么格式请求,如果是文本,多行文本则以文本格式请求,如果是数值,浮点则以数值格式请求。...添加json格式的选项,其中key为接口请求参数,接口调用时将使用此参数请求。label为用户在前端看到的选项名称。格式示例:图片前端展示示例:

1.1K10

Java开发中如何自动填充SQL语句中的公共字段

如果你想拿来就用,其实GitHub提供了很多可供选择的Mybatis审计组件,你可以通过关键词Mybatis Audit来搜索到它们选择一款最适合你的。...MetaObjectHandler {     @Override     public void insertFill(MetaObject metaObject) {         // 声明自动填充字段的逻辑...,"updateTime", LocalDateTime.class,LocalDateTime.now());     } } 然后我们扩展一下Mybatis Plus的Model把公共审计字段放进去并声明对应的填充策略...,当然你可以根据需要添加更多你需要填充字段。...总结 今天我们 SQL 审计中的一些公共字段的自动填充的常用方案进行了一些介绍,特别对Mybatis Plus提供的功能进行了介绍相信能够帮助你简化一些样板代码的编写。

2K10

如何解决mybatis-plus自动填充字段不生效问题

01前言 使用过mybatis-plus的朋友可能会知道,通过实现元对象处理器接口com.baomidou.mybatisplus.core.handlers.MetaObjectHandler可以实现字段填充功能...,得到的tableInfo是null,因而无法进入自动填充实现逻辑,因此导致填充自动失效 03如何解决update(updateWrapper),自动填充不生效问题 通过源码分析我们得知,只要tableInfo...不为空,则就会进入自动填充逻辑,而tableInfo不为空的前提是更新或者插入的实体不是null对象,因此我们的思路就是调用update方法时,要确保实体不为null 方案一:实体更新时,直接使用update...service.update(entity,updateWrapper); } } return null; } } 04总结 文章开头一直指明...mybatis-plus版本,是因为我跟过mybatis-plus3.1版本、3.3版本、3.4版本的自动填充的调用源码,其源码的实现各有不同,因为我github的mybatis-plus引用的版本是

1.9K20

小书MybatisPlus第9篇-常用字段默认值自动填充

需求案例:插入数据的时候自动填充createTime和updateTime为当前插入数据的时间,在数据更新的时候修改updateTime为修改数据的时间。...使用@TableField注解标记实体类中的哪些字段需要填充: @Data public class User { private Long id; private String name...,有如下几种可选值: DEFAULT:默认不处理 INSERT:插入时自动填充字段 UPDATE:更新时自动填充字段 INSERT_UPDATE:插入和更新时自动填充字段 二、自定义填充默认数值 编写公共字段填充处理器类...,该类继承了MetaObjectHandler类,重写 insertFill和updateFill方法,我们在这两个方法中获取需要填充字段以及默认填充的值。...填充处理器MyMetaObjectHandlerSpring Boot中需要声明@Component或@Bean注入 strictInsertFill和strictUpdateFill方法第二个参数写的是实体类里的属性名

2.6K10

在线问题反馈模块实战(五):实现对通用字段内容自动填充功能

环境说明:idea2019.3 + springboot2.3.1.REALSE + mybati-plus3.2.0 + mysql5.6 + jdk1.8 二、正文         一期提到那通过实体类的自动注入...mybatis-plus-boot-starter 3.2.0 第二步:实体类添加注解属性 在你需要自动填充字段加上注解...这分别代表你的insert、update方法触发执行时所会进行的字段填充策略。...,也就是不继承BaseEntity,自己实体单独加上那些字段或者额外封装个通用实体类但不加mp的填充注解,这样也是可以的。         ...然后对于继承了BaseEntity又无法获取用户信息的,目前我也是没有办法避免它也会执行这个字段注入,发现个最笨的方法就是徒手写sql,持久层定义mapper方法;虽然啊这方案比较low,但是能有效解决目前问题的

22820
领券