公共字段自动填充

  • 实现元对象处理器接口: com.baomidou.mybatisplus.mapper.IMetaObjectHandler

  • 注解填充字段 @TableField(.. fill = FieldFill.INSERT) 生成器策略部分也可以配置!

  1. public class User {
  2. // 注意!这里需要标记为填充字段
  3. @TableField(.. fill = FieldFill.INSERT)
  4. private String fillField;
  5. ....
  6. }
  • 自定义实现类 MyMetaObjectHandler
  1. /** 自定义填充公共 name 字段 */
  2. public class MyMetaObjectHandler extends MetaObjectHandler {
  3. /**
  4. * 测试 user 表 name 字段为空自动填充
  5. */
  6. public void insertFill(MetaObject metaObject) {
  7. // 更多查看源码测试用例
  8. System.out.println("*************************");
  9. System.out.println("insert fill");
  10. System.out.println("*************************");
  11. // 测试下划线
  12. Object testType = getFieldValByName("testType", metaObject);//mybatis-plus版本2.0.9+
  13. System.out.println("testType=" + testType);
  14. if (testType == null) {
  15. setFieldValByName("testType", 3, metaObject);//mybatis-plus版本2.0.9+
  16. }
  17. }
  18. @Override
  19. public void updateFill(MetaObject metaObject) {
  20. //更新填充
  21. System.out.println("*************************");
  22. System.out.println("update fill");
  23. System.out.println("*************************");
  24. //mybatis-plus版本2.0.9+
  25. setFieldValByName("lastUpdatedDt", new Timestamp(System.currentTimeMillis()), metaObject);
  26. }
  27. }

特别说明: 一点要注解填充字段,查看文档问题部分!

spring 启动注入 MyMetaObjectHandler 配置

  1. <!-- MyBatis SqlSessionFactoryBean 配置 -->
  2. <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
  3. <property name="globalConfig" ref="globalConfig"></property>
  4. </bean>
  5. <bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
  6. <!-- 公共字段填充处理器 -->
  7. <property name="metaObjectHandler" ref="myMetaObjectHandler" />
  8. </bean>
  9. <!-- 自定义处理器 -->
  10. <bean id="myMetaObjectHandler" class="com.baomidou.test.MyMetaObjectHandler" />