weixin_52845311 2024-09-13 09:26 采纳率: 0%
浏览 178
已结题

mymetaobjecthandler没有进入

public class MyMetaObjectHandler implements MetaObjectHandler
以上代码不执行 没有进入方法 已写配置文件MybatisPlusConfig(已执行)导致自动填充时间字段为null

  • 写回答

22条回答 默认 最新

  • 专家-皆知 2024-09-13 10:01
    关注
    获得0.15元问题酬金

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    看起来你遇到的问题是在MyBatis Plus中,自定义的MetaObjectHandler实现类MyMetaObjectHandler没有按预期工作,导致自动填充时间字段为null。这通常是因为配置不正确或者实现类没有被正确注册。

    为了解决这个问题,请确保你已经按照以下步骤正确配置和注册了你的MetaObjectHandler实现类:

    1. 确保MyMetaObjectHandler类实现了MetaObjectHandler接口,并且实现了必要的方法,如insertFillupdateFill

    2. 在Spring配置类中注册MyMetaObjectHandler。确保你的配置类中包含了MybatisPlusConfig,并且在其中注册了MyMetaObjectHandler

    下面是一个示例配置类,展示如何在Spring Boot中注册MetaObjectHandler

    import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import com.baomidou.mybatisplus.extension.handlers.MetaObjectHandler;
    
    @Configuration
    public class MybatisPlusConfig {
    
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
            return interceptor;
        }
    
        @Bean
        public MetaObjectHandler metaObjectHandler() {
            return new MyMetaObjectHandler();
        }
    }
    
    1. 确保MyMetaObjectHandler中的insertFillupdateFill方法正确实现。这些方法应该根据你的业务需求来填充字段。下面是一个简单的示例:
    import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
    import org.apache.ibatis.reflection.MetaObject;
    import org.springframework.stereotype.Component;
    
    import java.time.LocalDateTime;
    
    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {
    
        @Override
        public void insertFill(MetaObject metaObject) {
            this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
            this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
        }
    
        @Override
        public void updateFill(MetaObject metaObject) {
            this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
        }
    }
    
    1. 检查Spring Boot的自动配置。确保没有其他的配置覆盖了你的MyMetaObjectHandler

    2. 启动应用并检查日志。如果MyMetaObjectHandler中的代码没有执行,检查Spring Boot的启动日志,看看是否有任何相关的错误或警告信息。

    通过以上步骤,你应该能够解决MyMetaObjectHandler没有执行的问题。如果问题仍然存在,请提供更多的信息,比如具体的日志输出或错误信息,以便进一步分析。

    评论

报告相同问题?

问题事件

  • 系统已结题 9月21日
  • 赞助了问题酬金15元 9月13日
  • 创建了问题 9月13日