关键词:
自定义实现类MetaHandler
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.ZonedDateTime;
@Component
public class MetaHandler implements MetaObjectHandler
/**
* 新增数据执行
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject)
setValue("createTime", ZonedDateTime.now(), metaObject);
setValue("updateTime", ZonedDateTime.now(), metaObject);
/**
* 更新数据执行
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject)
setValue("updateTime", ZonedDateTime.now(), metaObject);
private void setValue(String fieldName, Object value, MetaObject metaObject)
Object field = getFieldValByName(fieldName, metaObject);
if (field == null && value != null)
setFieldValByName(fieldName, value, metaObject);
数据源配置类
@Configuration
@EnableConfigurationProperties(MybatisPlusProperties.class)
public class DataSourcePrimaryConfig
@Autowired
private MybatisPlusProperties properties;
/**
* 创建 SqlSessionFactory
*/
@Bean(name = "primarySqlSessionFactory")
@Primary
public SqlSessionFactory testSqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource) throws Exception
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapping/xxx/**/*.xml"));
GlobalConfig globalConfig = this.properties.getGlobalConfig();
// 全局自动填充配置
globalConfig.setMetaObjectHandler(new MetaHandler());
bean.setGlobalConfig(globalConfig);
bean.setVfs(SpringBootVFS.class);
// 自定义类型处理器的路径
bean.setTypeHandlersPackage("com.xxx.xxx.common.persistence.typehandler");
return bean.getObject();
ZonedDateTime类型处理
package com.xxx.xxx.common.persistence.typehandler;
import org.apache.ibatis.lang.UsesJava8;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.*;
import java.time.ZoneId;
import java.time.ZonedDateTime;
/**
* mybatis 3.5以上自带的ZonedDateTimeTypeHandler 需要驱动的支持
* @author Shinka
* @date 2021/08/26
*/
@UsesJava8
public class ZonedDateTimeTypeHandler extends BaseTypeHandler<ZonedDateTime>
private static ZonedDateTime getZonedDateTime(Timestamp timestamp)
if (timestamp != null)
return ZonedDateTime.ofInstant(timestamp.toInstant(), ZoneId.systemDefault());
return null;
@Override
public void setNonNullParameter(PreparedStatement ps, int i, ZonedDateTime parameter, JdbcType jdbcType)
throws SQLException
ps.setTimestamp(i, Timestamp.from(parameter.toInstant()));
@Override
public ZonedDateTime getNullableResult(ResultSet rs, String columnName) throws SQLException
Timestamp timestamp = rs.getTimestamp(columnName);
return getZonedDateTime(timestamp);
@Override
public ZonedDateTime getNullableResult(ResultSet rs, int columnIndex) throws SQLException
Timestamp timestamp = rs.getTimestamp(columnIndex);
return getZonedDateTime(timestamp);
@Override
public ZonedDateTime getNullableResult(CallableStatement cs, int columnIndex) throws SQLException
Timestamp timestamp = cs.getTimestamp(columnIndex);
return getZonedDateTime(timestamp);
字段注解
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
protected ZonedDateTime createTime;
@ApiModelProperty(value = "更新时间")
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
protected ZonedDateTime updateTime;
参考
自动填充相关
MyBatis-Plus如何自动填充数据表的创建时间和更新时间
时间类型相关
mybatis属性映射中的ZonedDateTime,用于插入到MS-SQL
mybatis中使用Java8的日期LocalDate、LocalDateTime
自定义类型处理器相关
mybatis typeHandlers 类型处理器(xml配置四)
mybatis学习(一):XML配置-TypeHandler
MyBatis 3.5.5 参考文档 类型处理器(typeHandlers)
基于SpringBoot自定义实现Mybatis-TypeHandler
SpringBoot Mybatis EnumTypeHandler自定义统一处理器
spring boot 与mybatis整合,type-aliases-package、type-handlers-package等配置不起作用,导致类加载失败
springboot+mybatis 自定义类型处理器配置无效问题
Springboot整合Mybatis使用TypeHandler来转换数据库中的数据
mybatisplus全局自动填充配置&自定义类型处理器(代码片段)
自定义实现类MetaHandlerimportcom.baomidou.mybatisplus.core.handlers.MetaObjectHandler;importorg.apache.ibatis.reflection.MetaObject;importorg.springframework.stereotype.Component;importjava.time.ZonedDateTime;@ComponentpublicclassMetaHandlerimplementsMetaObjectHandler/***新增数据执行... 查看详情
mybatisplus字段自动填充配置(代码片段)
实体类@ApiModelProperty(value="创建时间")@TableField(fill=FieldFill.INSERT)privateDategmtCreate;@ApiModelProperty(value="更新时间")@TableField(fill=FieldFill.INSERT_UPDATE)privateDategmtModified;Handler处理器packag 查看详情
mybatisplus的自动填充功能使用!
有时我们希望在更新数据的时候,自动完成某些字段的值的填充,如创建一个实体的时候,自动生成创建时间,更新的时候自动改变更新时间等。在指定字段标注注解,生成器策略部分也可以配置。//创建时间@TableField(fill=FieldFil... 查看详情
mybatisplus详细教程(代码片段)
目录一、什么是MybatisPlus二、快速入门2.1、创建数据库mybatis_plus2.2、创建user表2.3、插入数据2.4、初始化项目2.5、添加依赖2.6、配置(连接数据库)2.7、编码2.8、开始使用2.9、小结三、配置日志四、CRUD4.1、插入测试4.2、自定义ID生... 查看详情
[mybatisplus]常用注解_@tablename_@tableid_@tablefield_@tablelogic&&通过全局配置配置主键生成策略
常用注解@TableName设置实体类所对应的表名如果全部表都有某个前缀,难道我们要通过一个一个加注解的方式来解决实体类对应表名问题吗?我们可以通过配置文件来解决这个问题:@TableId将属性所对应的字段指定为... 查看详情
[mybatisplus]常用注解_@tablename_@tableid_@tablefield_@tablelogic&&通过全局配置配置主键生成策略(代码片段)
常用注解@TableName设置实体类所对应的表名如果全部表都有某个前缀,难道我们要通过一个一个加注解的方式来解决实体类对应表名问题吗?我们可以通过配置文件来解决这个问题:@TableId将属性所对应的字段指定为... 查看详情
mybatisplus自动填充
mybatisplus自动填充数据库表的创建时间、修改时间,这些个操作一遍都是自动化完成的,我们不希望手动更新。这时候自动填充便可以发挥作用了。1、方式一数据库级别(注意:不建议此方式,因为工作中不允许你修改数据库)... 查看详情
mybatisplus是啥
参考技术AMyBatis-Plus (opensnewwindow)(简称MP)是一个 MyBatis (opensnewwindow)的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响... 查看详情
关于mybatisplus中metaobjecthandler自动填充功能出现的问题及处理
1、自动填充的字段:createdBy,updatedBy,createdDate,updatedDate/***插入使用*/@OverridepublicvoidinsertFill(MetaObjectmetaObject){Stringoperator="bokai";fillValue(metaObject,CREATED_BY,()->operator);fillValue(met 查看详情
springboot----mybatisplus插件
自动填充注解实体字段publicclassUser{@TableField(fill=FieldFill.INSERT)privateDatecreateTime;@TableField(fill=FieldFill.INSERT_UPDATE)privateDateupdateTime;}自定义实现类@ComponentpublicclassMyMetaObjectHandlerimplemen 查看详情
mybatisplus字段自动填充失效,填充值为null的一种解决方法
文章目录问题描述问题剖析解决方法问题描述有一个实体类UserEntity对其属性UserEntity#createTime字段注解了@TableField(fill=FieldFill.INSERT)根据业务需要定义了UserMapper#inserUser()方法,参数注解了@Param(“user”)如下:当调... 查看详情
springboot自动配置原理源码分析+自定义starter启动器+可视化监控+mybatisplus使用(代码片段)
一、springBoot自动化配置原理1.starter管理机制通过依赖了解SpringBoot管理了哪些starter通过依赖spring-boot-dependencies搜索starter-发现非常多的官方starter,并且已经帮助我们管理好了版本。项目中使用直接引入对应的starter即可,... 查看详情
mybatis-plus自动填充功能-踩坑(代码片段)
Mybatis-Plus自动填充功能-踩坑今天柯南君想用MybatisPlus自动填充功能来填充创建时间和修改时间的时候,按照Mybatis-Plus自动填充功能的配置来配置时,发现未生效。第一步:注解填充字段/***创建时间*/@TableField(value... 查看详情
mybatis-plus自动填充功能-踩坑(代码片段)
Mybatis-Plus自动填充功能-踩坑今天柯南君想用MybatisPlus自动填充功能来填充创建时间和修改时间的时候,按照Mybatis-Plus自动填充功能的配置来配置时,发现未生效。第一步:注解填充字段/***创建时间*/@TableField(value... 查看详情
springboot整合mybatis-plus分页自动填充功能(代码片段)
...插件配置类在包dzxx.crud.config中创建分页插件配置类:MybatisPlusConfig,并修改数据库的类型。然后添加@configuration和@mapperScan注解,packagedzxx.crud.config;importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.exte... 查看详情
mybatisplus高级(代码片段)
...f0c;例如记录的创建时间,更新时间等。我们可以使用MyBatisPlus的自动填充功能,完成这些字段的赋值工作:7.1.1原理实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler,确定填充具体操作注解... 查看详情
初学者必看,springboot+mybatisplus+swagger快速开发套路和总结
快速开发套路和总结一、模块开发快速开发套路建module改pomyml主启动二、业务类开发业务类(手动)建表写sql实体类、dao、servicecontrolle... 查看详情
mybatisplus快速入门(2021.07.16)(代码片段)
目录一、MyBatis-Plus入门1、简介2、创建并初始化数据库3、确认idea配置4、创建项目5、编写代码二、主键策略1、插入操作2、MP的主键策略三、自动填充和乐观锁1、更新操作2、自动填充3、乐观锁4、乐观锁实现流程四、查询1、查询... 查看详情