mybatisplus 时间格式化
时间: 2023-10-07 15:06:50 浏览: 354
Mybatis-plus提供了使用DATE_FORMAT()函数进行时间格式化的功能。您可以在查询条件中使用DATE_FORMAT()函数来对时间字段进行格式化。例如,可以使用以下方式查询创建时间为2019年的数据:
```
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("DATE_FORMAT(created_time, '%Y')", "2019");
```
在上述示例中,我们使用了DATE_FORMAT()函数将created_time字段格式化为年份,并与2019进行比较。
相关问题
mybatisplus 查询格式化日期
在 MyBatisPlus 中,如果你想要格式化查询结果中的日期字段,通常是在 SQL 映射文件(xml 或者使用 `ModelMapper` 配置)中处理。以下是一个示例:
1. **XML映射文件**:
在 SQL 查询语句中,你可以使用 `#{}` 或 `${}` 格式化表达式来引用一个预定义的 Java 方法,该方法会自动调用 `Date` 对象的 `toString()` 方法,然后传递给 `String` 格式化器。例如:
```xml
<select id="selectWithFormattedDate" resultType="YourEntity">
SELECT * FROM your_table
WHERE created_at = #{created_at, typeHandler=yyyy-MM-dd HH:mm:ss}
</select>
```
这里 `typeHandler=yyyy-MM-dd HH:mm:ss` 指定了日期格式化为 "年-月-日 时:分:秒"。
2. **Java配置** (如果你使用的是 ModelMapper):
如果你在 Java 代码中使用 ModelMapper,可以通过创建自定义类型转换器来指定日期格式:
```java
@Mapper
public interface YourMapper {
@Select("SELECT * FROM your_table WHERE created_at = #{createdAt, typeHandler=yourCustomDateTypeHandler}")
YourEntity selectWithFormattedDate(String createdAt);
}
// 创建自定义类型转换器
@ValueConverter
public class CustomDateTypeHandler implements TypeHandler<Date> {
@Override
public Date handleResult(Object value) {
return value != null ? new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value.toString()) : null;
}
// 其他必要的方法
}
```
当你执行这个查询后,返回的结果中的 `created_at` 字段就会按照指定的格式显示。
mybatisplus 时间格式
MybatisPlus支持使用Java8的LocalDateTime和LocalDate来映射数据库中的日期时间类型字段,也支持使用注解进行格式化。
1. 使用Java8日期时间类型
在实体类中,使用Java8的LocalDateTime和LocalDate类型来映射数据库中的日期时间类型字段,例如:
```java
public class User {
private Long id;
private String name;
private LocalDateTime createTime;
private LocalDate birthday;
// ...
}
```
对应的数据库表中,createTime字段类型为datetime,birthday字段类型为date。
2. 使用注解进行格式化
在实体类中,使用注解来指定日期时间类型字段的格式化方式,例如:
```java
public class User {
private Long id;
private String name;
@TableField(value = "create_time", fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@TableField(value = "birthday")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate birthday;
// ...
}
```
其中,@TableField注解用于指定数据库表中的字段名和自动填充属性,@JsonFormat注解用于指定日期时间类型字段的格式化方式。
以上示例中,createTime字段格式化为"yyyy-MM-dd HH:mm:ss",birthday字段格式化为"yyyy-MM-dd"。
3. 全局配置
可以通过MybatisPlus的全局配置来设置Java8日期时间类型的全局格式化方式,例如:
```java
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// ...
return interceptor;
}
@Bean
public MybatisPlusPropertiesCustomizer mybatisPlusPropertiesCustomizer() {
return properties -> {
// 设置Java8日期时间类型的全局格式化方式
properties.getGlobalConfig().getDbConfig()
.setLogicDeleteValue("1")
.setLogicNotDeleteValue("0")
.setSqlInjector(new LogicSqlInjector())
.setMetaObjectHandler(new MyMetaObjectHandler())
.setDbConfig(new GlobalConfig.DbConfig()
.setLogicDeleteField("deleted")
.setTablePrefix("t_")
.setFormat(LocalDateTime.class, new MyDateFormat()));
};
}
private static class MyDateFormat extends IEnumJsonSerializer<LocalDateTime> {
private static final long serialVersionUID = 1L;
@Override
public String toJsonString(LocalDateTime object) {
return object.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
}
}
```
以上示例中,通过MybatisPlusPropertiesCustomizer来设置Java8日期时间类型的全局格式化方式为"yyyy-MM-dd HH:mm:ss",并将其注入到MybatisPlus的全局配置中。
这样,在实体类中不再需要使用@JsonFormat注解来指定日期时间类型字段的格式化方式。
阅读全文