mybatis-plus自动填充用户名、id和时间
依赖
<!-- mybatis-plus的依赖 请根据需要选择适合的版本 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-core</artifactId>
<version>3.5.0</version>
</dependency>
定义一个公共的类
说明:
打上注解@TableField(fill = FieldFill.INSERT)就是新增的时候赋值
打上注解@TableField(fill = FieldFill.INSERT_UPDATE)就是新增或更新的时候赋值
package com.ruoyi.common.core.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* Entity基类
*
* @author ruoyi
*/
@Data
public class EstBaseEntity implements Serializable
{
private static final long serialVersionUID = 1L;
/** 创建者 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/** 更新者 */
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/** 更新时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
定义一个类实现MetaObjectHandler
说明:我只写了时间,用户那些按框架逻辑来写
package com.ruoyi.common.config;
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 MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
// 插入填充字段
this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
// 同时为 updateTime 赋值,尽管在插入时它通常与 createTime 相同
this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
}
@Override
public void updateFill(MetaObject metaObject) {
// 更新填充字段
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
}
}
sqlSessionFactory设置全局配置
说明:我用的若依框架,设置全局配置后才能使用,若依自带的是没有该配置的,如何只进行了上面的两步操作,参数是不会自动添加的
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
{
String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
String mapperLocations = env.getProperty("mybatis.mapperLocations");
String configLocation = env.getProperty("mybatis.configLocation");
typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
VFS.addImplClass(SpringBootVFS.class);
//这个就是全局配置的所需参数
GlobalConfig globalConfig = GlobalConfigUtils.defaults();
//MyMetaObjectHandler就是上面自己定义的实现MetaObjectHandler的类
globalConfig.setMetaObjectHandler(new MyMetaObjectHandler());
final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
//最后在设置全局配置就可以了
sessionFactory.setGlobalConfig(globalConfig);
return sessionFactory.getObject();
}