Springboot中转换时间格式

本文介绍了如何在Java实体类中使用@JsonFormat注解规范日期时间格式,XML映射文件中配置查询结果的时间类型,以及YAML中全局设置时间格式。重点讲解了如何仅在查询时间列时避免携带其他字段的方法。
摘要由CSDN通过智能技术生成

在数据表中只查询时间这一列时,规定时间格式

在实体类中通过注解
public class DevTemp {
	private int id;
	private double temp;
	
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
	private Date dDate;
}

在xml文件中

<resultMap id="TempMap"
		type="testmaven04_device.com.hzx.device.pojo.DevTemp">
		<id property="id" column="id" />
		<result property="temp" column="temp" />
		<result property="dDate" column="d_date" />
	</resultMap>
在yml配置文件中

在yml文件中配置时间格式,在实体类中不必加@JsonFormat注解

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    serialization:
      write-dates-as-timestamps: false

在xml文件,只查询时间这一列时,结果集类型直接使用date类型。

	<select id="queryTempDate" resultType="date">
		select d_date from t_temp;
	</select>

在这里插入图片描述

如果使用resultMap,结果集中仍会带有其他字段

	<resultMap id="DateMap"
	type="testmaven04_device.com.hzx.device.pojo.DevTemp">
		<result property="dDate" column="d_date"/>
	</resultMap>

在这里插入图片描述

Spring Boot结合MyBatis的项目,当启用自动映射枚举类型(typeEnums=true 或 typeEnumsPackage)时,MyBatis能够自动识别和处理枚举类型的映射,使得你在编写SQL查询时可以直接使用枚举名称而不需要手动进行类型转换。 例如,假设你有一个名为Status的枚举: ```java public enum Status { ACTIVE, INACTIVE } ``` 在MyBatis的映射文件(如mapper.xml),你可以在查询条件里直接使用枚举名称,而不必将其转换为整数值: ```xml <select id="selectByStatus" resultType=yourEntityClass> SELECT * FROM your_table WHERE status = #{status} </select> ``` 然后在Service层或Repository,你可以像这样传入枚举值: ```java List<YourEntity> entities = repository.selectByStatus(Status.ACTIVE); ``` 如果不希望MyBatis自动转换枚举,你可以按如下步骤操作: 1. **禁用自动转换**:在Mybatis的配置,将`typeEnums`属性设为`false`或去掉`typeEnumsPackage`属性,让MyBatis不再自动检测和转换枚举。 ```java MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean(); // ... factoryBean.setTypeEnums(false); // or remove the line with typeEnumsPackage ``` 2. **手动转换**:在使用枚举值时,始终将其转换为对应的整数值或者字符串再传递给SQL语句。 3. **自定义TypeHandler**:如果你有大量的枚举类型,也可以创建一个自定义的TypeHandler来处理枚举的映射。 请注意,关闭自动转换可能会导致SQL书写和维护变得稍微复杂一些,因为需要明确处理枚举值的类型转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值