mybatis-plus自动填充时间
程序员文章站
2024-02-18 15:29:40
...
第一种方式:数据库设置时间更新(不建议使用)
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
User user=new User();
user.setId(1272823863285137410L);
user.setEmail("看修改时间否");
int update = userMapper.updateById(user);
if(update==1){
List<User> users = userMapper.selectList(null);
for (User user1 : users) {
System.out.println(user1);
}
}
}
第二种方法 使用mybatis-plus的@TableField 注解
我们在开发过程中,很多时候不能去修改数据库,尽量不要使用第一种方法
先把刚才修改的数据库改回去。
修改我们的实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
@TableId(type=IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
@TableField(fill = FieldFill.INSERT)
private Date create_time;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date update_time;
}
@TableField 注解
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface TableField {
String value() default "";
String el() default "";
boolean exist() default true;
String condition() default "";
String update() default "";
FieldStrategy strategy() default FieldStrategy.DEFAULT;
FieldFill fill() default FieldFill.DEFAULT;
boolean select() default true;
}
FieldFill是我们的填充规则
public enum FieldFill {
DEFAULT, //没有
INSERT, //插入时
UPDATE,//修改时
INSERT_UPDATE;//插入和修改时
private FieldFill() {
}
}
编写处理器去处理注解(3.3版本之前)
package com.example.demo.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* @author
* @date 2020/06/16
* @description: description
* @version: 1.0.0
*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("create_time",new Date(),metaObject);
this.setFieldValByName("update_time",new Date(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("update_time",new Date(),metaObject);
}
}
插入测试
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
User user=new User();
user.setName("修改时间成功否");
user.setEmail("aaa@qq.com");
user.setAge(18);
int insert = userMapper.insert(user);
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
修改测试
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
User user=new User();
user.setId(1272823863285137412L);
user.setAge(3);
int update = userMapper.updateById(user);
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
推荐阅读
-
mybatis-plus自动填充时间
-
YII2怎么自动更新上次登录时间
-
Android自动填充短信验证码功能(demo)
-
Android 中使用ContentObserver模式获取短信用正则自动填充验证码
-
Oracle自动插入当前时间的年月日YYYY-MM-DD格式的实现
-
oracle自动分区 (时间 数字) 博客分类: Oracle小记 oracle自动分区时间数字
-
ASP.NET中实现Form表单字段值自动填充到操作模型中
-
Android自动填充短信验证码功能(demo)
-
php可以自动读取数据库内容然后判断用户的注册时间,大于多久的自动发送一封邮件吗?该怎么解决
-
余额宝定期转入怎么设置公司到账时间自动转入余额宝