环境搭建请看该链接的MybatisPlus模块
在常用业务中有些属性需要配置一些默认值,MyBatis-Plus提供了实现此功能的插件,也就是自动填充功能。
自动填充功能注意事项:
填充原理是直接给entity的属性设置值!!!注解则是指定该属性在对应情况下必有值,如果无值则入库会是nullMetaObjectHandler提供的默认方法的策略均为:如果属性有值则不覆盖,如果填充值为null则不填充字段必须声明TableField注解,属性fill选择对应策略,该声明告知Mybatis-Plus需要预留注入SQL字段填充处理器MyMetaObjectHandler在 Spring Boot 中需要声明@Component或@Bean注入要想根据注解FieldFill.xxx和字段名以及字段类型来区分必须使用父类的strictInsertFill或者strictUpdateFill方法不需要根据任何来区分可以使用父类的fillStrategy方法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学习路线目录索引