1.配置自动填充的字段
package com.jsonweb.json.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.util.Date;
/**
* Author: Json
* Date: 2021/10/17
* 实体类
**/
//lombok 注解
//不需要写 get set方法 有参无参构造 都会生成
@Data
public class User {
@TableId(type= IdType.AUTO)
private Integer id;
private String name;
private Integer age;
private String email;
@TableField(fill = FieldFill.INSERT) //自动填充
private Date creatTime;
@TableField(fill = FieldFill.UPDATE) //更新填充
private Date updateTime;
}
2.
package com.jsonweb.json.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* Author: Json
* Date: 2021/10/24
* @Component, @Service, @Controller, @Repository是spring注解,注解后可以被spring框架所扫描并注入到spring容器来进行管理
* @Component是通用注解,其他三个注解是这个注解的拓展,并且具有了特定的功能
* @Repository注解在持久层中,具有将数据库操作抛出的原生异常翻译转化为spring的持久层异常的功能。
* @Controller层是spring-mvc的注解,具有将请求进行转发,重定向的功能。
* @Service层是业务逻辑层注解,这个注解只是标注该类处于业务逻辑层。
**/
@Component //需要架个这样的注解 最普通的组件,可以被注入到spring容器进行管理
public class myHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
// this.setFieldValByName("creatTime",new Date(),metaObject);
// this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
3. 执行插入和更新操作测试
//添加测试
@Test
public void add(){
User user=new User();
user.setName("whl");
user.setAge(10);
user.setEmail("123@qq.com");
//不需要设置 id值 会自动生成 框架会自动生成一个 id值
int insert = userMapper.insert(user);
System.out.println("返回值:"+insert);
}
//主键生成策略
//1.自动增长 分表分库不方便 @TableId(type= IdType.AUTO) 注解 在id上增加
//2. UUID 排序不方便
//3. Redis实现
//4. mp中的自带策略 snowflake算法
//IdType 类型:
//AUTO 自动增长
//ID_WORKER MP自带
//ID_WORKER_STR MP自带
//INPUT 自己输入
//NONE 没策略
//UUID 唯一值
@Test
public void updateTest(){
//根据id 更新字段
User user = new User();
user.setId(1);
user.setAge(3);
int i = userMapper.updateById(user);
System.out.println(i);
}