MybatisPlus学习(七)实现自动填充功能

tech2023-10-22  98

文章目录

1、自动填充功能介绍2、实现自动填充功能

环境搭建请看该链接的MybatisPlus模块


1、自动填充功能介绍

      在常用业务中有些属性需要配置一些默认值,MyBatis-Plus提供了实现此功能的插件,也就是自动填充功能。

自动填充功能注意事项

填充原理是直接给entity的属性设置值!!!注解则是指定该属性在对应情况下必有值,如果无值则入库会是nullMetaObjectHandler提供的默认方法的策略均为:如果属性有值则不覆盖,如果填充值为null则不填充字段必须声明TableField注解,属性fill选择对应策略,该声明告知Mybatis-Plus需要预留注入SQL字段填充处理器MyMetaObjectHandler在 Spring Boot 中需要声明@Component或@Bean注入要想根据注解FieldFill.xxx和字段名以及字段类型来区分必须使用父类的strictInsertFill或者strictUpdateFill方法不需要根据任何来区分可以使用父类的fillStrategy方法

2、实现自动填充功能

1、为需要自动填充的属性添加注解 @TableField

@TableField(fill = FieldFill.INSERT) //插入时填充 private String email; @TableField(fill = FieldFill.INSERT_UPDATE) //插入和修改时都填充 private String lastName;

2、实现字段填充控制器,编写自定义填充规则

实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler

@Component public class MyHandler implements MetaObjectHandler { //insert @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("lastName","lastName自动填充插入",metaObject); this.setFieldValByName("email","email自动填充插入",metaObject); } //update操作时要填充的字段 @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("email","email自动填充修改",metaObject); } }

3、插入测试

@Autowired EmployeeMapper employeeMapper; @Test void contextLoads() { Employee employee = new Employee(); employee.setAge(19); employee.setGender(0); int insert = employeeMapper.insert(employee); System.out.println(insert); }

3、更新测试

@Autowired EmployeeMapper employeeMapper; @Test void contextLoads() { Employee employee = new Employee(); employee.setAge(19); int update = employeeMapper.update(employee,new QueryWrapper<Employee>().eq("gender",1)); System.out.println(update); }


博主会持续更新,有兴趣的小伙伴可以点赞、关注和收藏下哦,你们的支持就是我创作最大的动力!

Java学习路线目录索引

最新回复(0)