前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot 整合MybatisPlus 实现字段自动注入

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

作者头像
AI码师
发布2022-09-19 11:54:18
3860
发布2022-09-19 11:54:18
举报

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

前言

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

开整

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

添加注解

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

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

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

代码语言:javascript
复制
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方法,在这个方法中,我们可以进行统一的赋值操作,如:设置时间,设置当前用户等信息

代码语言:javascript
复制
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(推荐使用)

}}

编写测试接口

代码语言:javascript
复制
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-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐哥聊编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 开整
    • 添加注解
      • 添加配置
        • 编写测试接口
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档