概述
先说一下在springboot中,我们要使用mybatis-plus做自动填充的步骤
- 实体类中公共字段,添加
@TableField
注解
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("bbs_module")
public class Module implements Serializable {
private static final long serialVersionUID = 1L;
//版块id
@TableId(value = "id", type = IdType.ID_WORKER_STR)
private String id;
private String title;
private String intro;
private Integer topicNum;
private Integer sort;
//逻辑删除 1(true)已删除, 0(false)未删除
private Boolean isDeleted;
//创建时间
@TableField(fill = FieldFill.INSERT)
private Date gmtCreate;
//更新时间
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date gmtModified;
}
- 配置自动填充的组件
MyMetaObjectHandler
,并在类上加@component
注解进行注入。
@component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("gmtCreate",new Date(),metaObject);
this.setFieldValByName("gmtModified",new Date(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("gmtModified",new Date(),metaObject);
}
}
对!这就完成了,因为springboot底层帮我们做好了自动配置,我们只需要根据需求去添加组件即可。
但是最近这个SSM项目中,没有自动配置,遇见了很多坑,就像这个,接下来说说这个应该怎样配置。
ssm中的自动填充配置步骤
首先肯定也是一样,要在实体类中的公共字段上添加@TableField
注解,也要把组件MyMetaObjectHandler
给出,但是这里不要
加@component
,因为ssm不像springboot会帮我们自动装配。
所有的组件我们不仅应该自己注入,而且要自己进行装配。(@component是注入的过程,而装配的过程我们应该自己做)
在我们的xml配置中,给MybatisSqlSessionFactoryBean
进行属性配置,
这是MybatisSqlSessionFactoryBean
的源码,常用属性已经圈出。
我的错误
第一次我只使用了@component
进行注入
第二次我采用xml方式配置,但是没有在MybatisSqlSessionFactoryBean
中进行属性配置如下图
我总结我的错误就是:只考虑到了注入该组件,并没有考虑到组装
该组件。
如果理解有误请大佬指点,,,,,