Mybatis-Plus:自动填充功能 @TableField

Posted CodeJiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis-Plus:自动填充功能 @TableField相关的知识,希望对你有一定的参考价值。

本节案例承接上节案例

1. 自动填充功能

有些时候我们可能会有这样的需求,插入或者更新数据时,希望有些字段可以自动填充数据,比如passwordversion等。在Mybatis-Plus中提供了这样的功能,可以实现自动填充。


1.1 添加@TableField注解

password添加自动填充功能,在新增数据时有效。

FieldFill提供了多种模式选择:


1.2 编写MyMetaObjectHandler


MyMetaObjectHandler.java

package com.tian.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

public class MyMetaObjectHandler implements MetaObjectHandler 

    /**
     * 插入数据时填充
     *
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) 
        // 先获取到password的值,再进行判断,如果为空,就进行填充,如果不为空,就不做处理
        Object password = getFieldValByName("password", metaObject);
        if (null == password) 
            //字段为空,可以进行填充
            setFieldValByName("password", "888888", metaObject);
        
    

    /**
     * 更新数据时填充
     *
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) 
    


1.3 把MyMetaObjectHandler放入SpringIOC容器

MybatisPlusConfig.java

    @Bean
    public MyMetaObjectHandler myMetaObjectHandler() 
        return new MyMetaObjectHandler();
    

1.4 测试


SpringbootMybatisplusApplicationTests.java

package com.tian.springbootmybatisplus;

import com.tian.mapper.UserMapper;
import com.tian.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class SpringbootMybatisplusApplicationTests 

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testInsert() 
        User user = new User();
        user.setName("关羽");
        user.setUserName("guanyu");
        user.setAge(30);
        user.setEmail("guanyu@itast.cn");
        user.setVersion(1);
        
        int result = this.userMapper.insert(user);
        System.out.println("result = " + result);
    

运行结果:

生成的sql为:select * from tb_user



以上是关于Mybatis-Plus:自动填充功能 @TableField的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis-Plus自动填充功能 - 踩坑

Mybatis-Plus自动填充功能 - 踩坑

MyBatis-Plus-自动填充功能(学习笔记)

Mybatis-Plus:自动填充功能 @TableField

springboot 整合Mybatis-Plus分页自动填充功能

MyBatis-Plus-自动填充功能(学习笔记)