mybatisplus 配置时间格式
时间: 2023-10-04 15:13:32 浏览: 986
Mybatis-plus的时间格式配置可以通过在实体类的时间字段上使用`@TableField`注解和`@DateTimeFormat`注解来实现。例如,要配置开始时间字段的时间格式,可以在`startTime`字段上添加`@TableField(fill = FieldFill.INSERT)`和`@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")`注解。这样,Mybatis-plus在插入数据时会自动使用指定的时间格式进行填充。
相关问题
MYBATISPLUS配置时间自动填充
### MyBatis Plus 中配置时间字段自动填充
#### 实现自动填充的时间字段
为了实现时间字段的自动填充,在实体类中的相应属性上需添加 `@TableField` 注解并指定其 `fill` 属性。对于创建时间和更新时间这两个常见场景,可以分别设置为 `INSERT` 和 `UPDATE` 或者统一设为 `INSERT_UPDATE` 来满足不同需求[^1]。
```java
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
public class User {
@TableField(fill = FieldFill.INSERT)
private Date createTime; // 创建时间
@TableField(fill = FieldFill.UPDATE)
private Date updateTime; // 更新时间
}
```
#### 定义处理器来完成实际的填充逻辑
除了标记哪些字段应该被自动填充外,还需要定义具体的处理程序以便于在适当的时候给这些字段赋值。这通常涉及到自定义 MetaObjectHandler 接口的具体实现类,并重写其中的方法以提供具体的行为[^2]。
```java
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
}
}
```
上述代码展示了如何通过继承 `MetaObjectHandler` 并覆盖相应的插入(`insertFill`)和更新(`updateFill`)方法来进行时间戳的自动化管理。每当有新的记录加入数据库或是已有条目得到修改时,都会触发这里设定的操作从而确保相关联的时间信息能够及时刷新。
解决springboot+mybatisplus返回时间格式带T
Spring Boot 结合 MyBatisPlus 使用时,如果你想要控制数据返回的时间格式(如`yyyy-MM-dd HH:mm:ss`而不是默认的`yyyy-MM-dd'T'HH:mm:ss.SSSZ`),你可以通过自定义全局结果映射器(Global Result Mapping)来实现。以下是一个简单的步骤:
1. 首先,创建一个全局结果映射器(GlobalResultMap)的实现类,比如`CustomJsonMapper.java`:
```java
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.Mybatis plus Plugin;
import com.baomidou.mybatisplus.extension.plugins.interceptor.ResultInterceptor;
import org.apache.ibatis.type.JdbcType;
public class CustomJsonMapper extends BaseMapper implements Plugin {
@Override
public ResultInterceptor getInterceptors() {
return new ResultInterceptor() {
@Override
public Object intercept(Object o, Method method, Object[] args, Map<String, Object> params) throws Throwable {
if (method.getName().equals("selectOne") || method.getName().equals("selectList")) {
// 这里假设查询结果为List<Object>
List<?> list = (List<?>) o;
for (Object item : list) {
Date dateField = ((YourEntity) item).getFieldThatNeedsFormat(); // 替换为你的实体类名及需要格式化的字段
if (dateField != null) {
params.put(dateField.toString(), dateField.toLocalDate()); // 将日期转换为LocalDate格式
}
}
}
return o;
}
};
}
@Override
public String getInterceptorId() {
return "customJsonMapper";
}
@Override
public boolean init(MetaObject metaObject) {
return true;
}
@Override
public void destroy() {
}
}
```
这里假设`YourEntity`是你数据库表对应的实体类,并且有一个名为`fieldThatNeedsFormat`的时间戳字段。
2. 然后,在Spring Boot应用启动配置中启用这个插件,添加到MyBatis Plus的配置里:
```java
import com.baomidou.mybatisplus.extension.MybatisPlusMapperFactoryBean;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlugin;
...
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusMapperFactoryBean mapperFactoryBean() {
MybatisPlusMapperFactoryBean factoryBean = new MybatisPlusMapperFactoryBean();
factoryBean.setPlugins(new CustomJsonMapper());
return factoryBean;
}
}
```
3. 别忘了将`CustomJsonMapper`注册到MyBatis Plus的插件列表中。
现在,当你从数据库获取到时间字段时,它将以`yyyy-MM-dd HH:mm:ss`的形式显示。如果有其他字段也需要特定格式化,可以相应地调整上述代码。
阅读全文
相关推荐














