SpringBoot 整合MybatisPlus 实现字段自动注入

最近在整合MybatisPlus,发现mybatisPlus有很多有趣并且有用的功能,今天给大家分享一个:如何使用MybatisPlus实现数据库字段自动填充的功能。

前言

在我们日常开发中,我们经常会为每个表设置一个创建时间、更新时间或者创建人,更新人的字段,相信大家在这之前肯定都是手动塞值的,为每个表写同样一份代码。今天我将给大家介绍下,如何使用MybatisPlus实现数据库字段自动填充的功能。

开整

代码已经上传到码云:https://gitee.com/lezaiclub/Springboot-hyper-integration.git,欢迎白嫖

添加注解

为需要填充的字段加上MybatisPlus注解,注意这个注解有两种常用场景

  • insert:当执行insert语句才进行填充这个字段
  • update:当执行update语句才进行填充这个字段

在这里我们给Member的创建时间和更新时间分别加上注解

package com.aims.mybatisplus.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import Java.io.Serializable;
import java.util.Date;

/**
 * @description member
 * @author AI码师
 * @date 2021-11-07
 */
@Data
@TableName("member")
public class Member implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.AUTO)
    /**
    * 主键
    */
    private Long id;

    /**
    * 创建人
    */
    private String createBy;

    /**
    * 创建时间
    */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
    * 更新人
    */
    private String updateBy;

    /**
    * 更新时间
    */
    @TableField(fill = FieldFill.UPDATE)
    private Date updateTime;

    /**
    * 会员名称
    */
    private String memberName;

    /**
    * 会员类型
    */
    private int memberType;

    /**
    * 手机号
    */
    private String memberPhone;

    /**
    * 会员等级
    */
    private int memberLevel;
    /**
    * 会员等级
    */
    private String tenantId;


    public Member() {}
}

添加配置

大概解释下这段代码:1.MybatisPlus在执行插入或更新字段时,会扫描当前实体是否包含对应的注解,如果包含则会回调对应的insertFill或updateFill方法,在这个方法中,我们可以进行统一的赋值操作,如:设置时间,设置当前用户等信息

package com.aims.mybatisplus.conf;

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.util.Date;

@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill ....");
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 起始版本 3.3.0(推荐使用)
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill ....");
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // 起始版本 3.3.0(推荐使用)

}}

编写测试接口

package com.aims.mybatisplus.controller;

import com.aims.mybatisplus.dao.MemberMapper;
import com.aims.mybatisplus.model.entity.Member;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/testFieldFill")
public class TestFieldFIllController {
    @Autowired
    private MemberMapper memberMapper;
    @RequestMapping("insertFill")
    public String insertFill(){
        Member member = new Member();
        member.setMemberName("测试字段填充插入");
        memberMapper.insert(member);
        return "success";
    }
    @RequestMapping("updateFill")
    public String updateFill(@RequestParam long id){
        Member member = new Member();
        member.setMemberName("更新填充");
        member.setId(id);
        memberMapper.updateById(member);
        return "success";
    }
}

大家可以自行验证结果哈。

关注公众号回复“干货领取”获得2021最新面试题一套

SpringBoot 整合MybatisPlus 实现字段自动注入

扫码关注我们,了解最新内容

成长心路 | 优质书单 | 面试资料

牛人故事 | 前沿技术 | 视频教程




原文始发于微信公众号(乐哥聊编程):SpringBoot 整合MybatisPlus 实现字段自动注入

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

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/21811.html

(0)

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!