Mybatis全局配置分页,新增修改公共字段
mybatis-plus自定义配置,包括分页查询.新增修改统一修改公共属性
配置类
package com.wmang.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import com.wmang.common.base.BaseContextHandler;
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.reflection.MetaObject;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.LocalDateTime;
/**
* mybatisPlus 配置类,使其加载配置文件
*
*/
@Configuration
@MapperScan(basePackages = {"com.wmang.car.*.mapper.**"})
public class MybatisPlusConfig implements MetaObjectHandler {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
// 开启 count 的 join 优化,只针对 left join !!!
return new PaginationInterceptor().setCountSqlParser(new JsqlParserCountOptimize());
}
/**
* insert 默认值
*
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
String account = StringUtils.isBlank(SpringContextHandler.getLoginUser()) ? "admin" : BaseContextHandler.getMasRemoteUser();
//创建人
setFieldValByName("createBy", account, metaObject);
//创建时间
setFieldValByName("createAt", LocalDateTime.now(), metaObject);
//修改人
setFieldValByName("updateBy", account, metaObject);
//修改时间
setFieldValByName("updateAt", LocalDateTime.now(), metaObject);
}
/**
* update默认值
*
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
String account = StringUtils.isBlank(SpringContextHandler.getLoginUser()) ? "admin" : BaseContextHandler.getMasRemoteUser();
//修改人
setFieldValByName("updateBy", account, metaObject);
//修改时间
setFieldValByName("updateAt", LocalDateTime.now(), metaObject);
}
}
实体类
注意实体类要和配置类配合使用.否则就会出现不填充问题.
@ApiModelProperty("创建人")
// 插入时触发填充
@TableField(value = "create_by", fill = FieldFill.INSERT)
private String createBy;
// 插入时触发填充
@ApiModelProperty("创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
// 插入和修改时同时触发填充
@ApiModelProperty("更新人")
@TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
private String updateBy;
// 插入和修改时同时触发填充
@ApiModelProperty("更新时间")
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Date updateTime;