MyBatisPlus中MetaObjectHandler的使用
文章来源:凌兰 时间:2025-03-11
因由是公司1个共事交到需要,让把1条数据录时髦createTime字段,配置为指定的字段,然则他走断面出现施行MyBatisPlus的insert之前值是对于的,然则insert以后便改成以后技术了。
最先尔觉得是数据库字段建设为了凭据以后时分录进值,便默许为以后时代戳,然则1念过失,默许是指不树立值,那里仍然树立了为何照旧过失?
以后呈现,体系代码中配置了MetaObjectHandler处置,分外处置了createTime那个字段。
MetaObjectHandler:元数据对于象处置器
MetaObjectHandler交心是mybatisPlus为尔们供给的的1个扩大交心,尔们能够哄骗那个交心正在尔们拔出大概革新数据的时分,为少许字段指定默许值。
应用场景:大众字段弥补等,如updateTime、createTime、createUser、updateUser等大众字段多的填补。
应用办法
真体的大众字段应用@TableField评释;
1)@TebleField(fill = FieldFill.INSERT):示意此字段只正在拔出/新删操纵时革新数据
2)@TebleField(fill = FieldFill.INSERT_UPDATE):显露此字段正在修正战新删操纵时皆革新数据;
3)@TebleField(fill = FieldFill.UPDATE):表现此字段只正在修正操纵时皆革新数据;
自界说元对于象处置器类,告竣MetaObjectHandler交心,誊写insertFill、updateFill办法。
示例真体:
packagecom.example.springboot.entity;importcom.baomidou.mybatisplus.annotation.*;importcom.fasterxml.jackson.annotation.JsonFormat;importcom.fasterxml.jackson.databind.annotation.JsonSerialize;importcom.fasterxml.jackson.databind.ser.std.ToStringSerializer;importlombok.AllArgsConstructor;importlombok.Builder;importlombok.Data;importlombok.NoArgsConstructor;importjava.util.Date;importjava.util.HashMap;importjava.util.List;importjava.util.Map;/***用户对于象*/@Data@Builder@NoArgsConstructor@AllArgsConstructor@TableName("sp_boot_user")publicclassUser{@TableId(value="id",type=IdType.AUTO)@JsonSerialize(using=ToStringSerializer.class)privateIntegerid;@TableField(exist=false)privateList<Integer>ids;@TableField(value="u_name")privateStringname;/***余额*/@TableField("balance_point")privateLongbalancePoint;/***总数*/@TableField("total_point")privateLongtotalPoint;@TableField(value="address")privateStringaddress;@TableField(value="create_time",fill=FieldFill.INSERT)@JsonFormat(timezone="GMT+8",pattern="yyyy-MM-ddHH:mm:ss")privateDatecreateTime;@TableField(value="update_time",fill=FieldFill.UPDATE)@JsonFormat(timezone="GMT+8",pattern="yyyy-MM-ddHH:mm:ss")privateDateupdateTime;/***哀求参数*/@TableField(exist=false)privateMap<String,Object>params=newHashMap<>();}示例交话柄现:
packagecom.example.springboot.config;importcom.baomidou.mybatisplus.core.handlers.MetaObjectHandler;importorg.apache.ibatis.reflection.MetaObject;importorg.springframework.stereotype.Component;importjava.util.Date;@ComponentpublicclassMyMetaObjecthandlerimplementsMetaObjectHandler{@OverridepublicvoidinsertFill(MetaObjectmetaObject){metaObject.setValue("createTime",newDate());}@OverridepublicvoidupdateFill(MetaObjectmetaObject){metaObject.setValue("updateTime",newDate());}}编写单位尝试:
@TestpublicvoidtestInsert(){Useruser=newUser();user.setName("尝试1");user.setAddress("天址A");user.setTotalPoint(100L);user.setBalancePoint(50L);userMapper.insert(user);}检查挨印:
CreatinganewSqlSessionSqlSession[org.apache.ibatis.session.defaults.DefaultSqlSession@16f62062]wasnotregisteredforsynchronizationbecausesynchronizationisnotactiveJDBCConnection[com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@3d763ae5]willnotbemanagedbySpring==>Preparing:INSERTINTOsp_boot_user(u_name,balance_point,total_point,address,create_time)VALUES(?,?,?,?,?)==>Parameters:尝试1(String),50(Long),100(Long),天址A(String),2023-12-2111:45:31.45(Timestamp)<==Updates:1ClosingnontransactionalSqlSession[org.apache.ibatis.session.defaults.DefaultSqlSession@16f62062]能够观到,insert时,会主动注进以后的工夫。
推举您浏览更多相关于“ MyBatisPlusMetaObjectHandler主动注进 ”的作品
文章推荐
Copyright © 2024-2025 燿动吧 – 知识分享,快乐你我,燿动青春 http://www.yaodong8.com All Rights Reserved 网站地图