使用java自动填充,实现mysql的创建修改时间的自动填充
使用java自动填充,实现mysql的创建修改时间的自动填充
一、首先我们需要在表上创建相应的字段
1:值得注意的是这个类型,datetime,还有别的操作时间的类型,这个区别还是有一点,详细可以百度一下,此处就不写了
二、标准的java实体映射类肯定是需要的
1:这第一个注解:@DateTimeFormat,就是指定这个时间格式,这个与上述的datetime还是有一点关系的,可以自己百度,尝试一下别的
2:关键是第二个注解:@TableField,相当于表达这是什么操作,然后与下文形成对应
3:注意:!!!! 此处的Date 是java.util.Date,不要导sql的包,sql也有一个Date,具体我也没研究为啥,如果导了这个sql包,会报错
三、注解有了还不行,还要做最后一步,实现MetaObjectHandler接口
1:此处需要注意,需要交给spring容器管理
2:实现这个接口的两个方法,insertFill和updateFill
3:测试即可实现自动填充,当然,既然是自动填充,所以我们不需要传值
四、如果出现时间点不一样的情况,一般是差8个小时[东八区],那么这个时候,我们就需要添加一点配置
复制代码
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
#关键操作,数据库名后面添加:?serverTimezone=GMT%2B8&useSSL=false&useUnicode=true&characterEncoding=UTF-8
url: jdbc:mysql://192.168.27.212:3306/mydata?serverTimezone=GMT%2B8&useSSL=false&useUnicode=true&characterEncoding=UTF-8
jackson:
#时间的格式
date-format: yyyy-MM-dd HH:mm:ss
#时间+8小时
time-zone: GMT+8
复制代码
五、如果测试还是不行,配置文件不起作用,那就只能写死时间,使用时间的工具类【此操作可能导致多台设备添加的时间不一致,谨慎使用】
1、引入依赖
joda-time
joda-time
2、在实现MetaObjectHandler接口的类中,要把new Date();改掉
复制代码
1 @Component
2 public class MyObjectHandler implements MetaObjectHandler {
3 @Override
4 public void insertFill(MetaObject metaObject) {
5 /**
6 * fieldName:实体映射类的属性名
7 * 第二个参数:属性值
8 * 第三个:元数据对象
9 * DateTime.now().plusHours(13).toDate():时间+13小时,
10 * 这个13小时只是我这里差的值,差多少改多少
11 */
12 this.setFieldValByName(“createTime”, DateTime.now().plusHours(13).toDate(),metaObject);
13 this.setFieldValByName(“updateTime”,DateTime.now().plusHours(13).toDate(),metaObject);
14 }
15
16 @Override
17 public void updateFill(MetaObject metaObject) {
18 this.setFieldValByName(“updateTime”,DateTime.now().plusHours(13).toDate(),metaObject);
19 }
20 }
复制代码
六、以上的写死时间的操作,纯属个人娱乐操作,没有实际应用意义,只有配置文件生效的那个操作,才是最好的操作,传值的时候,什么都不需要写,对象传值的话,直接忽略它就好
使用java自动填充,实现mysql的创建修改时间的自动填充相关教程