使用mybatis-plus自动填充数据库表字段的插入时间与修改时间
首先我们可以在配置文件中添加这样一句代码,可以使得控制台输出mybatis-plus的日志mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl效果如下Creating a new SqlSessionSqlSession [org.apache.ibatis.session.defaults.
·
首先我们可以在配置文件中添加这样一句代码,可以使得控制台输出mybatis-plus的日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
效果如下
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1a96d94c] was not registered for synchronization because synchronization is not active
2022-02-12 16:13:51.912 INFO 9364 --- [ main] com.zaxxer.hikari.HikariDataSource : defaultDataSource - Starting...
2022-02-12 16:13:52.101 INFO 9364 --- [ main] com.zaxxer.hikari.HikariDataSource : defaultDataSource - Start completed.
JDBC Connection [HikariProxyConnection@131532344 wrapping com.mysql.cj.jdbc.ConnectionImpl@732f6050] will not be managed by Spring
==> Preparing: UPDATE user SET name=?, update_time=? WHERE id=?
==> Parameters: 马大哈(String), 2022-02-12 16:13:51.908(Timestamp), 1492410367029325825(Long)
<== Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1a96d94c]
这样可以在我们测试的时候更加直观的看见数据库的运行信息
接下来我们在数据库表中添加两个新字段,分别为create_time与update_time
然后我们再实体类中也添加上对应的
/**
* @Author Kk
* @Date 2022/2/11 18:35
* @Description
*/
@Data
@Component
public class User {
private Long id;
private String name;
private Integer age;
private String email;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
如上,我们需要在createTime属性上添加@TableField注解并且设置属性
(fill = FieldFill.INSERT),表示在插入操作的时候自动填充;
在updatTime属性上添加@TableField注解并且设置属性(fill = FieldFill.INSERT_UPDATE),表示在插入与更新操作的时候自动填充。
接下来我们需要创建一个类实现MetaObjectHandler接口并将其注入到容器中
/**
* @Author Kk
* @Date 2022/2/12 15:45
* @Description
*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
//使用mp进行添加操作这个方法执行
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
//使用mp进行修改操作这个方法执行
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
让我们去测试类中测试一下吧~
@SpringBootTest
class Mpdemo01ApplicationTests {
@Autowired
private UserMapper userMapper;
@Autowired
private User user;
@Test
@DisplayName("测试插入")
void contextLoads() {
user.setAge(88);
user.setEmail("1234567879@qq.com");
user.setName("马牛逼");
userMapper.insert(user);
}
@Test
@DisplayName("测试更新")
void updateByID(){
user.setId(1492410367029325825L);
user.setName("马大哈");
userMapper.updateById(user);
}
}
效果如下图所示~
这样我们就实现自动填充插入时间与更新时间啦!
更多推荐
已为社区贡献2条内容
所有评论(0)