mybatis-plus 测试插入功能+更新功能

测试插入功能

我们使用自带的插入功能 同时不给出ID

@Test
    void testInsert(){
        User user1=new User();
        user1.setAge(20);
        user1.setName("jie");
        user1.setEmail("hhh@qq.com");
        //返回受影响的行数
        int insert = userMapper.insert(user1);
        System.out.println(insert);
        System.out.println(user1);
    }

会发现mplus会自动生成一个ID,同时对象的ID属性也会被赋值
这里自动生成了ID 0

生成的策略会根据ID类型而改变

使用@TableId注解


格式例子

 @TableId(type = IdType.AUTO)
    private long id;

有如下类型

测试AUTO类型ID

使用上面注解声明ID是AUTO类型 在数据库对应的字段也改为自增类型

现在我们插入一条数据试试

可以发现mplus会知道使用AUTO类型

测试更新操作

原数据

测试代码:

@Test
    void testUpdate(){
        //构造一个ID相同的类型 交给函数处理即可
        User user=new User();
        //ID为6 类型为Long
        user.setId(6L);
        user.setName("被更新的jie");
        userMapper.updateById(user);
    }

运行后发现给出的属性在数据库被修改了,没有给的属性就不会改变 十分方便

自动化填充处理

一些字段是需要用到自动化填充(如时间)

数据库层次操作

数据库添加两个字段 默认值为当前时间戳,update_time设置为根据当前时间戳更新

实体类同步

private Date createTime;
private Date updateTime;

这样后我们就调用上面的函数就可以实现同步更新时间了,都是不推荐直接修改数据库 所以我们要选择代码层次的方法

代码层次的方法

删除在数据库上的更新 默认值设置
在实体类上添加注解
使用@TableField注解 (字段注解)
该注解有一个属性

属性不同值表

 @TableField(fill = FieldFill.INSERT)
    private Date createTime;
 @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

编写处理器去处理这个注解

package com.jie.handler;

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 MyHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }
}

之后即可完成需要的功能

posted @ 2021-08-16 17:49  一个经常掉线的人  阅读(438)  评论(0)    收藏  举报