问题表述:Mybatisplus自动填充时创建日期和修改日期一直为null
最近在学mybatisplus,在写自动填充的时候那个创建日期一直为空就很烦…
搞了一下午终于解决问题了。
一、mybatisplus项目搭建
创建一个springboot项目导入mybatisplus依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
mapper包:
UserMapper:
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hill.mybatis_plus.pojo.User;
import org.springframework.stereotype.Repository;
@Repository
public interface UserMapper extends BaseMapper<User> {
}
pojo包
User:
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
@TableId(type =IdType.INPUT)
private Long id;
private String name;
private int age;
private String email;
@TableField(value = "create_time",fill = FieldFill.INSERT)
private Date createTime;
@TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
handler包
MyMetaHandler:
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@Component
public class MyMetaHandler 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());
}
}
测试添加代码
@Test
public void insertText(){
User user = new User();
user.setAge(11);
user.setName("孙悟空");
user.setEmail("hillsunn@foxmail.com");
user.setId(889L);
int insert = userMapper.insert(user);
System.out.println(insert);
}
Application中要把mapper扫到IOC中:
@MapperScan("com.hill.mybatis_plus.mapper")
@SpringBootApplication
public class MybatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusApplication.class, args);
}
}
运行代码显示添加成功了,但是创建时间和修改时间没有插入进入
后来发现了原因,
是数据类型的不正确导致的
把之前的Date 换成 LocalDateTime就可以啦
这下日期就可以显示出了。