当前位置: 代码网 > it编程>编程语言>Java > mybatis plus配置自动create_time和update_time方式

mybatis plus配置自动create_time和update_time方式

2024年09月22日 Java 我要评论
mybatis plus配置自动create_time和update_time注意时间类型的转化package com.ruoyi.framework.handler;import com.baomi

mybatis plus配置自动create_time和update_time

注意时间类型的转化

package com.ruoyi.framework.handler;

import com.baomidou.mybatisplus.core.handlers.metaobjecthandler;
import org.apache.ibatis.reflection.metaobject;
import org.springframework.stereotype.component;

import java.time.localdatetime;
import java.time.zoneid;
import java.util.date;

/**
 * 自定义元对象处理器,用于在数据库操作中自动填充创建时间和更新时间。
 * @component 注解表示该类是一个spring bean,可以被其他bean依赖注入。
 */
@component
public class mymetaobjecthandler implements metaobjecthandler {

    /**
     * 在插入数据时自动填充创建时间和更新时间。
     * @param metaobject 元对象,代表待插入的数据对象。
     * 使用反射机制,通过字段名设置字段值,实现创建时间和更新时间的自动填充。
     */
    @override
    public void insertfill(metaobject metaobject) {
        date now = date.from(localdatetime.now().atzone(zoneid.systemdefault()).toinstant());
        this.setfieldvalbyname("createtime", now, metaobject);
        this.setfieldvalbyname("updatetime", now, metaobject);
    }

    /**
     * 在更新数据时自动填充更新时间。
     * @param metaobject 元对象,代表待更新的数据对象。
     * 使用反射机制,通过字段名设置字段值,实现更新时间的自动填充。
     */
    @override
    public void updatefill(metaobject metaobject) {
        date now = date.from(localdatetime.now().atzone(zoneid.systemdefault()).toinstant());
        this.setfieldvalbyname("updatetime", now, metaobject);
    }
}

package com.ruoyi.common.core.domain;

import java.io.serializable;
import java.util.date;
import java.util.hashmap;
import java.util.map;

import com.baomidou.mybatisplus.annotation.fieldfill;
import com.baomidou.mybatisplus.annotation.tablefield;
import com.fasterxml.jackson.annotation.jsonformat;
import com.fasterxml.jackson.annotation.jsonignore;
import com.fasterxml.jackson.annotation.jsoninclude;

/**
 * entity基类
 * 
 * @author ruoyi
 */
public class baseentity implements serializable
{
    private static final long serialversionuid = 1l;

    /** 搜索值 */
    @jsonignore
    @tablefield(exist=false)
    private string searchvalue;

    /** 创建者 */
    private string createby;

    /** 创建时间 tablefield自动维护*/
    @tablefield(fill = fieldfill.insert)
    @jsonformat(pattern = "yyyy-mm-dd hh:mm:ss")
    private date createtime;

    /** 更新者 */
    private string updateby;

    /** 更新时间 tablefield自动维护*/
    @tablefield(fill = fieldfill.insert_update)
    @jsonformat(pattern = "yyyy-mm-dd hh:mm:ss")
    private date updatetime;

    /** 备注 */
    private string remark;

    /** 请求参数 */
    @jsoninclude(jsoninclude.include.non_empty)
    @tablefield(exist=false)
    private map<string, object> params;

    public string getsearchvalue()
    {
        return searchvalue;
    }

    public void setsearchvalue(string searchvalue)
    {
        this.searchvalue = searchvalue;
    }

    public string getcreateby()
    {
        return createby;
    }

    public void setcreateby(string createby)
    {
        this.createby = createby;
    }

    public date getcreatetime()
    {
        return createtime;
    }

    public void setcreatetime(date createtime)
    {
        this.createtime = createtime;
    }

    public string getupdateby()
    {
        return updateby;
    }

    public void setupdateby(string updateby)
    {
        this.updateby = updateby;
    }

    public date getupdatetime()
    {
        return updatetime;
    }

    public void setupdatetime(date updatetime)
    {
        this.updatetime = updatetime;
    }

    public string getremark()
    {
        return remark;
    }

    public void setremark(string remark)
    {
        this.remark = remark;
    }

    public map<string, object> getparams()
    {
        if (params == null)
        {
            params = new hashmap<>();
        }
        return params;
    }

    public void setparams(map<string, object> params)
    {
        this.params = params;
    }
}
package com.ruoyi.framework.config;

import com.baomidou.mybatisplus.annotation.dbtype;
import com.baomidou.mybatisplus.extension.plugins.mybatisplusinterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.blockattackinnerinterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.optimisticlockerinnerinterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.paginationinnerinterceptor;
import org.springframework.context.annotation.bean;
import org.springframework.context.annotation.configuration;
import org.springframework.transaction.annotation.enabletransactionmanagement;

/**
 * mybatis plus 配置
 *
 * @author ruoyi
 */
@enabletransactionmanagement(proxytargetclass = true)
@configuration
public class mybatisplusconfig
{
    @bean
    public mybatisplusinterceptor mybatisplusinterceptor()
    {
        mybatisplusinterceptor interceptor = new mybatisplusinterceptor();
        // 分页插件
        interceptor.addinnerinterceptor(paginationinnerinterceptor());
        // 乐观锁插件
        interceptor.addinnerinterceptor(optimisticlockerinnerinterceptor());
        // 阻断插件
        interceptor.addinnerinterceptor(blockattackinnerinterceptor());
        return interceptor;
    }

    /**
     * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html
     */
    public paginationinnerinterceptor paginationinnerinterceptor()
    {
        paginationinnerinterceptor paginationinnerinterceptor = new paginationinnerinterceptor();
        // 设置数据库类型为mysql
        paginationinnerinterceptor.setdbtype(dbtype.mysql);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        paginationinnerinterceptor.setmaxlimit(-1l);
        return paginationinnerinterceptor;
    }

    /**
     * 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html
     */
    public optimisticlockerinnerinterceptor optimisticlockerinnerinterceptor()
    {
        return new optimisticlockerinnerinterceptor();
    }

    /**
     * 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html
     */
    public blockattackinnerinterceptor blockattackinnerinterceptor()
    {
        return new blockattackinnerinterceptor();
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com