我们使用自带的插入功能 同时不给出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);
}
}
之后即可完成需要的功能