MyBatis-Plus中的的插⼊或者更新数据自动添加

MetaObjectHandler 接⼝是 Mybatis-Plus 为我们提供的的⼀个扩展接⼝,我们可以利⽤这个接⼝在我们插⼊或者更
新数据的时候,为⼀些字段指定默认值。
1. 在实体类中添加 @TableField 注解。
FieldFill.INSERT :表示只是插⼊时⽣效。
FieldFill.INSERT_UPDATE :表示插⼊和更新时⽣效。
1.例子
@Data
@TableName("t_product") // 表明注解,标识实体类对应的表
public class Product implements Serializable {
 // ...
 @TableField(fill = FieldFill.INSERT)
 private Date createdTime;
 @TableField(fill = FieldFill.INSERT_UPDATE)
 private Date modifiedTime;
}
2. 在项⽬的 com.cy.config 包下创建 MyMetaObjectHandler 类实现 MetaObjectHandler 接⼝,并添加
@Component 注解。
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
 @Override
 public void insertFill(MetaObject metaObject) {
                                    插入的类
 this.strictInsertFill(metaObject, "createdTime", Date.class, new Date()); // 起始版本
3.3.0(推荐使⽤)
 this.strictInsertFill(metaObject, "modifiedTime", Date.class, new Date()); // 起始版
本3.3.0(推荐使⽤)
 }
 @Override
 public void updateFill(MetaObject metaObject) {
 this.strictUpdateFill(metaObject, "modifiedTime", Date.class, new Date()); // 起始版
本3.3.0(推荐)
 }
}
3. MyBatisPlusTests 测试类中添加测试⽅法。
public void test13() {
 Product product = new Product();
 product.setId(1);
 product.setName("⼩⽶");
 product.setPrice(1999);
 int row = productMapper.updateById(product);
 System.out.println("row = " + row);
}

你可能感兴趣的:(mybatis)