MybatisPlus学习(七)实现自动填充功能
程序员文章站
2022-07-13 09:20:59
...
文章目录
1、自动填充功能介绍
在常用业务中有些属性需要配置一些默认值,MyBatis-Plus提供了实现此功能的插件,也就是自动填充功能。
自动填充功能注意事项:
- 填充原理是直接给entity的属性设置值!!!
- 注解则是指定该属性在对应情况下必有值,如果无值则入库会是null
- MetaObjectHandler提供的默认方法的策略均为:如果属性有值则不覆盖,如果填充值为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);
}
博主会持续更新,有兴趣的小伙伴可以点赞、关注和收藏下哦,你们的支持就是我创作最大的动力!
上一篇: Map集合
推荐阅读
-
Laravel框架使用Seeder实现自动填充数据功能
-
Android使用AutoCompleteTextView实现自动填充功能的案例
-
Android实现自动填充短信验证码功能
-
MyBatis-Plus - 实现字段自动填充功能
-
MybatisPlus学习(七)实现自动填充功能
-
MybatisPlus学习之(五)逻辑删除/ 自动填充/ 性能分析/ 乐观锁
-
mybatisplus.MetaObjectHandler;元对象字段填充控制器抽象类,实现公共字段自动写入
-
MybatisPlus 自动填充的实现
-
Laravel框架使用Seeder实现自动填充数据功能
-
jQuery 实现自动填充邮箱功能(带下拉提示)