mybatisplus在新增或者修改时设置字段自动填充

这篇具有很好参考价值的文章主要介绍了mybatisplus在新增或者修改时设置字段自动填充。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、需要实现元对象字段填充控制器抽象类,如下代码

package com.example.mybatisplus;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * mybatisplus字段填充器的实现
 * 实现公共字段的自动写入
 */
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createdAt",LocalDateTime.now(),metaObject);
        this.setFieldValByName("updatedAt",LocalDateTime.now(),metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updatedAt",LocalDateTime.now(),metaObject);
    }
}

fieldName要注意对应的生成的实体字段,不是数据库对应字段,否则无效

2、在生成的实体字段,@TableField增加fill填充,并写入填充的时机是新增还是修改

    @TableField(value = "CREATED_AT",fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    @TableField(value = "UPDATED_AT", fill = FieldFill.INSERT_UPDATE )
    private LocalDateTime updatedAt;

在此过程中可能会出现的错:

修改或者插入的时候报类型无效,java.sql.SQLException: 无效的列类型: 1111

分析原因,可能是某个字段的值为null,要么就是字段填充器没有设置默认值,但是又在@TableField设置了自动填充

综上,需要字段填充默认值,就一定需要实现MetaObjectHandler类中的方法文章来源地址https://www.toymoban.com/news/detail-798733.html

到了这里,关于mybatisplus在新增或者修改时设置字段自动填充的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java】制作pdf模板使用后端程序填充字段生成pdf或者图片

    自行下载安装; 打开pdf文件,表单-添加或编辑域 添加文本域,调整大小,可以编辑域的名字,默认fill_1这种名字。域鼠标右键-属性,可以调整字体大小等样式,编辑好还可以锁定; 编辑好保存,这个pdf文件就可以当模板使用了; 防止中文乱码,需要在网上下载字体ttf文件

    2024年01月21日
    浏览(46)
  • ES 新增字段和删除字段、修改字段值

    新增字段: 删除字段: 修改es的某个字段值:

    2024年02月05日
    浏览(42)
  • mybatisPlus之自动填充功能及防全表更新与删除插件

    基本介绍  Mybatis-plus自动填充功能是指在数据库表进行增、删、改、查操作时,自动将某些字段的值进行填充。这些字段的值可以是当前时间、登录用户ID等。 在项目中有一些属性,如果我们不希望每次都填充的话,我们可以设置为自动填充,比如常见的时间,创建时间和更

    2024年02月15日
    浏览(43)
  • es head 新增字段、修改字段、批量修改字段、删除字段、删除数据、批量删除数据

    目录 一、新增字段 二、修改字段值 三、批量修改字段值 ​四、删除字段 五、删除数据/文档 六、批量删除数据/文档 put   http://{ip}:{port}/{index}/_mapping/{type}     其中,index是es索引、type是类型 数据: 例子: 注意:如果报错Types cannot be provided in put mapping requests, unless the in

    2024年02月04日
    浏览(54)
  • 公共字段自动填充工具

    1、问题描述 在新增员工时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工时需要设置修改时间和修改人等字段。这些字段属于公共字段,也就是很多表中都有这些字段,如下(示例): 字段 类型 create_time datetime update_time datetime create_user bigint update_user bi

    2024年02月16日
    浏览(45)
  • Mybtisplus对时间字段进行自动填充

            这里我主要对字段createTime和updateTime进行自动填充,你们可以修改为自己对应的字段即可。         在需要填充的字段上加入 @TableField(fill = FieldFill.INSERT)或者 @TableField(fill = FieldFill.UPDATE),当执行SQL语句时就会拦截语句随后对SQL语句添加了@TableField的时间字段进行时

    2024年01月25日
    浏览(46)
  • Mybatis Plus 公共字段自动填充功能

    目录   1、问题引入 2、 基本功能实现 3、功能完善 3.1 ThreadLocal 3.1.1 介绍 3.1.2 常用方法 3.2 思路分析 3.3 代码实现 在我们的项目开发中,我们会发现有一些数据库表字段是每个表都有的,例如 : 创建时间,创建人 ,更新时间,更新人。 而我们目前的针对这些字段我们的目前

    2024年02月05日
    浏览(62)
  • java代码新增或修改时候的验证字段唯一

    java代码新增或修改时候的验证字段唯一

    2023年04月11日
    浏览(31)
  • 修改MySQL所有表的编码或者修改某个字段的编码

    在修改之前需要确认MySQL服务器的默认字符集和排序规则是utf8mb4,否则需要先修改MySQL服务器的默认字符集。可以通过以下命令查看MySQL服务器当前的默认字符集和排序规则: 如果当前默认字符集和排序规则不是utf8mb4,可以在MySQL的配置文件(如 my.cnf)中添加以下内容: 然后

    2024年02月08日
    浏览(39)
  • 请问如何用oracle触发器实现不允许新增/删除表/增加/减少/修改字段类型

    请问如何用oracle触发器实现不允许新增/删除表/增加/减少/修改字段类型 给本帖投票 56211打赏收藏  分享  转发到动态举报  写回复 性能测试中发现oracle11g数据库每天22点,oralce进程CPU占用率突增 11 条回复  切换为时间正序 请发表友善的回复… 发表回复 microsoft_fly 2008-11-18 还

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包