MyBatis-Plus之CRUD扩展二

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

本文同时参与 「掘力星计划」   ,赢取创作大礼包,挑战创作激励金

更新操作

update更新

    //测试更新
    @Test
    public void testUpdate(){
        User user = new User();
        user.setId(6L);
        user.setName("xxx很牛逼!");
        //注意:updateById,但是参数是一个对象
        int result = userMapper.updateById(user);
        System.out.println(result);
        System.out.println(user);
    }
复制代码

image.png

自动拼接sql

image.png

所有的sql都是自动生成的

自动填充

创建时间、修改时间!这些操作都是自动化完成的,我们不希望手动更新!

方式一数据级别(不建议使用)

1,在表中新增字段create_time,update_time

image.png 记得选择默认值

2、再次测试插入方法,我们需要先把实体类同步

  //对应数据库中的主键(uuid,自增id,雪花算法、redis,zookeeper)
    @TableId(type = IdType.INPUT )
    private Long id;
    private String name;
    private Integer age;
    private String email;
    private Date  create_time;
    private Date update_time;
复制代码

3、再次更新查看结果即可

image.png

方式二:代码级别(推荐)

1、删除数据库的默认值,更新操作!

image.png 2、实体类的字段上加注解

  //字段添加填充内容
    @TableField(fill = FieldFill.INSERT)
    private Date create_time;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date update_time
复制代码

3、编写处理器来处理这个注解即可!

@Slf4j //开启日志
@Component  //加入springioc容器
public class MyMetaObjectHandler implements MetaObjectHandler {
    
    //插入时候的填充策略
    @Override
    public void insertFill(MetaObject metaObject) {
           log.info("start insert fill....");
           this.setFieldValByName("create_time",new Date(),metaObject);
           this.setFieldValByName("update_time",new Date(),metaObject);
    }
    
    //更新时的填充策略
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill....");
        this.setFieldValByName("update_time",new Date(),metaObject);
    }
}
复制代码
## 小提示
开发中难免会遇到这个这个注解@Component

@Controller 控制器(注入服务)
 用于标注控制层,相当于struts中的action层

@Service 服务(注入dao)
 用于标注服务层,主要用来进行业务的逻辑处理

@Repository(实现dao访问)
 用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件
 .

@Component (把普通pojo实例化到spring容器中,相当于配置文件中的 )

泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller@Services等的时候),我们就可以使用@Component来标注这个类。
复制代码

猜你喜欢

转载自juejin.im/post/7017722808096522254