当前位置 : 主页 > 网络编程 > 其它编程 >

06_MybatisPlus—自动填充功能

来源:互联网 收集:自由互联 发布时间:2023-07-02
实现元对象处理器接口com.baomidou.mybatisplus.core.handlers.MetaObjectHandler注解填充字段TableField 实现元对象处理器接口com.baomidou.mybatisplus.core.handlers.MetaObjectHandler 注解填充字段 TableField(fill Fiel
实现元对象处理器接口com.baomidou.mybatisplus.core.handlers.MetaObjectHandler注解填充字段TableField

实现元对象处理器接口com.baomidou.mybatisplus.core.handlers.MetaObjectHandler 注解填充字段 TableField(fill FieldFill.INSERT_UPDATE) 生成器策略部分也可以配置:

public enum FieldFill {/*** 默认不处理*/DEFAULT,/*** 插入填充字段*/INSERT,/*** 更新填充字段*/UPDATE,/*** 插入和更新填充字段*/INSERT_UPDATE}

实体对象的编写

package com.zs.entity;DataAllArgsConstructorNoArgsConstructorpublic class User implements Serializable {private static final long serialVersionUID 1L;private Long id;private String name;private Integer age;private String email;private GenderEnum gender;TableField(fill FieldFill.INSERT_UPDATE)private String operator;TableLogicprivate Integer flag;public User(Long id, String name, Integer age, String email, GenderEnum gender) {this.id id;this.name name;this.age age;this.email email;this.gender gender;}}

自定义实现类 MyMetaObjectHandler

package com.zs.handler;Slf4jComponentpublic class MyMetaObjectHandler implements MetaObjectHandler {Overridepublic void insertFill(MetaObject metaObject) {log.info("start insert fill ....");this.strictInsertFill(metaObject, "operator", String.class, "Jetty");}Overridepublic void updateFill(MetaObject metaObject) {log.info("start update fill ....");this.strictUpdateFill(metaObject, "operator", String.class, "Tom");}}

测试类

Testpublic void test() {User user new User(13L, "Guido van Rossum", 25, "Guido van Rossumqq.com", GenderEnum.MALE);boolean res userService.save(user);System.out.println(res);}

在这里插入图片描述 注意事项 1、填充原理是直接给entity的属性设置值。 2、MetaObjectHandler提供的默认方法的策略均为:如果属性有值则不覆盖,如果填充值为null则不填充 3、字段必须声明TableField注解,属性fill选择对应策略,该声明告知Mybatis-Plus需要预留注入SQL字段 4、填充处理器MyMetaObjectHandler在 Spring Boot 中需要声明Component或Bean注入 5、update(T t,Wrapper updateWrapper)时t不能为空,否则自动填充失效

网友评论