文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MyBatis-Plus中自动填充功能的用法示例详解

2022-12-10 12:00

关注

前言

有些时候我们可能会有这样的需求,插入或者更新数据时,希望有些字段可以自动填充数据,比如密码、version、注册时默认的用户角色等。在MP中提供了这样的功能,可以实现自动填充功能。

下面例子的场景假设:如果用户在注册时,只会输入基本的用户信息,这是后台有个字段为user_role用户角色,普通用户注册的话都会自动以USER值设置,但这个值不是用户输入的,需要自动填充。

下面我们就根据这个假设来看看该如何实现这一功能。

一、添加@TableField注解

在持久化User类中,将角色对应的属性上添加注解@TableField(fill= FieldFill.INSERT),INSERT用来插入数据时进行填充。如下代码所示:

//角色
    @TableField(fill= FieldFill.INSERT)//插入数据时进行填充
    private String userRole;

当然,不只是在插入时可自动填充。还可设置在修改时,或者插入修改时都自动填充的操作。如下图所示:

二、编写MyMetaObjectHandler

我们需要编写MyMetaObjectHandler类,在类下需要继承MetaObjectHandler接口实现其方法,在方法内编写要自动填充的字段。

因为我们是以添加为例,所以这里就直接在insertFill下编写自动填充的内容,如果增加操作传下来的属性值为null的话,就要自动让该属性值设置为USER角色。如果有值的话我们不做操作。所以接下来只需要判断字段是否为空就可以。

代码如下所示:

package cn.imust.mp.handler;
 
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
 
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        Object userRole=getFieldValByName("userRole",metaObject);
        if(null == userRole){
            //字段为空,可以进行填充
            setFieldValByName("userRole","USER",metaObject);
        }
    }
 
    @Override
    public void updateFill(MetaObject metaObject) {
 
    }
}

三、对自动填充进行测试

在测试类下编写testInsert()方法,传值时就不需要设置userRole的值,添加完成后查看是否会自动填充(即查看userRole是否为USER值)

//测试添加方法
    @Test
    public void testInsert(){
        User user=new User();
        user.setUserName("哈哈111");
        user.setUserEmail("12433");
//        user.setUserRole("ADMIN");
        user.setUserStatus("0");
        user.setUserPassword("12344");
 
//        表中没有字段
        user.setHobby("足球");
        //受影响的行数  count
        int count = userMapper.insert(user);
        if(count>0){//添加成功
            //输出所有数据
            testSelectList();
        }else {//添加失败
            System.out.println("添加失败~");
        }
    }

四、运行效果图

执行上述的测试代码,得到如下图所示的效果图,添加成功在查询会发现userRole的值会被自动填充成上面设置的USER即普通用户的值。 说明测试成功~

总结

MP中的自动填充功能在实际中也是经常使用的知识点,大家要多多练习掌握,就像开发中时用户输入的数据肯定不会是对应数据库表的全部字段,有些字段都需要系统自动填充值,这里就需要自动填充功能来完成。步骤也很简单,多多练习两遍就能够掌握并且熟练运用其知识点。

到此这篇关于MyBatis-Plus中自动填充功能的用法的文章就介绍到这了,更多相关MyBatis-Plus自动填充内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯