下面是springboot项目中引用的Maven坐标
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
下面是我在单点登录系统中写的一个handle类:
package com.qinple.sso.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* @author MyPC
*
*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler
{
@Override
public void insertFill(MetaObject metaObject)
{
//对应下面写的父类的需要自动生成的字段名
Object created = getFieldValByName("created", metaObject);
if (null == created)
{
//字段为空,可以进行填充
setFieldValByName("created", new Date(), metaObject);
}
//同上
Object updated = getFieldValByName("updated", metaObject);
if (null == updated)
{
//字段为空,可以进行填充
setFieldValByName("updated", new Date(), metaObject);
}
}
@Override
public void updateFill(MetaObject metaObject)
{
//更新数据时,直接更新字段
setFieldValByName("updated", new Date(), metaObject);
}
}
下面是我要操作的实体类:
父类、基类
package com.qinple.sso.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import java.util.Date;
/**
* @author MyPC
*/
public abstract class BasePojo
{
@TableField(fill = FieldFill.INSERT)
private Date created;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updated;
public BasePojo()
{
}
public BasePojo(Date created, Date updated)
{
this.created = created;
this.updated = updated;
}
public Date getCreated()
{
return created;
}
public void setCreated(Date created)
{
this.created = created;
}
public Date getUpdated()
{
return updated;
}
public void setUpdated(Date updated)
{
this.updated = updated;
}
}
子类:
package com.qinple.sso.pojo;
import com.fasterxml.jackson.annotation.JsonIgnore;
/**
* @author MyPC
*/
public class User extends BasePojo {
private Long id;
//手机号
private String mobile;
@JsonIgnore
private String password; //密码,json序列化时忽略
public User()
{
}
public User(Long id, String mobile, String password)
{
this.id = id;
this.mobile = mobile;
this.password = password;
}
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
public String getMobile()
{
return mobile;
}
public void setMobile(String mobile)
{
this.mobile = mobile;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
}
以后创建User类的对象无需设置两个时间属性created、updated,它会自动填充;修改对象也无需设置updated属性,它会自己改。