广告
返回顶部
首页 > 资讯 > 后端开发 > Python >MyBatis-Plus中自动填充功能的用法示例详解
  • 482
分享到

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

MyBatis-Plus自动填充MyBatis-Plus自动填充功能 2022-12-10 12:12:28 482人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言一、添加@TableField注解二、编写MyMetaObjectHandler三、对自动填充进行测试四、运行效果图总结前言 有些时候我们可能会有这样的需求,插入或者更新数据

前言

有些时候我们可能会有这样的需求,插入或者更新数据时,希望有些字段可以自动填充数据,比如密码、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自动填充内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: MyBatis-Plus中自动填充功能的用法示例详解

本文链接: https://www.lsjlt.com/news/174755.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作