如下图:
根据你提供的信息,我可以初步判断这两种方法使用的是不同的第三方库。
第一种方法使用的是 MyBatis-Plus 的方法 this.strictInsertFill(),而第二种方法使用的是 MyBatis 的方法 metaObject.setValue()。这两种方法虽然都是用来设置数据库字段的默认值,但是实现方式略有不同。
this.strictInsertFill() 方法是 MyBatis-Plus 提供的自动填充功能,它是在 MyBatis 原有的基础上进行的扩展,主要是通过在 SqlInjector 中注册自定义的插入方法,实现对数据库字段的自动填充。在使用 this.strictInsertFill() 方法时,需要在实体类中定义对应的字段,并通过 @TableField 注解指定填充的字段名和填充方式(如填充的值类型、填充的值等)。
而 metaObject.setValue() 方法则是 MyBatis 原生的属性赋值方法,它通过 MetaObject 对象获取实体类的属性,并通过 setValue 方法设置属性值。在使用 metaObject.setValue() 方法时,需要手动指定属性名,并传入需要赋的值。
可能由于 MyBatis-Plus 的版本或配置问题,导致 this.strictInsertFill() 方法无法生效。而 metaObject.setValue() 方法是 MyBatis 原生的属性赋值方法,不会受到 MyBatis-Plus 的影响,所以能够生效。
需要注意的是,在使用 metaObject.setValue() 方法时,需要保证实体类中有对应的属性,并且属性名和数据库字段名一致。如果实体类中没有对应的属性,或者属性名与数据库字段名不一致,则需要使用 MyBatis-Plus 提供的 @TableField 注解来指定映射关系。