mybatis查询数据库日期格式时间
时间: 2025-02-03 10:11:30 浏览: 44
### 解决 MyBatis 查询数据库时日期格式化的方法
#### 使用 `TypeHandler` 实现自定义日期格式化
为了确保从数据库查询到的日期能够按照指定格式显示,可以利用 MyBatis 的 `TypeHandler` 接口来实现自定义的数据类型处理器。这允许在读取和写入数据时自动进行格式转换。
对于 Java 中的时间戳字段,可以通过如下方式配置:
```java
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TimestampTypeHandler implements TypeHandler<Date> {
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public void setParameter(PreparedStatement ps, int i, Date parameter, JdbcType jdbcType) throws SQLException {
if (parameter != null) {
ps.setTimestamp(i, new java.sql.Timestamp(parameter.getTime()));
} else {
ps.setNull(i, Types.TIMESTAMP);
}
}
@Override
public Date getResult(ResultSet rs, String columnName) throws SQLException {
java.sql.Timestamp sqlTimestamp = rs.getTimestamp(columnName);
return sqlTimestamp != null ? new Date(sqlTimestamp.getTime()) : null;
}
@Override
public Date getResult(CallableStatement cs, int columnIndex) throws SQLException {
java.sql.Timestamp sqlTimestamp = cs.getTimestamp(columnIndex);
return sqlTimestamp != null ? new Date(sqlTimestamp.getTime()) : null;
}
}
```
此代码实现了 `TypeHandler` 接口中用于处理时间戳类型的四个抽象方法[^4]。
#### 配置 XML 文件中的映射关系
接着,在 Mapper XML 文件中声明该处理器的应用范围:
```xml
<resultMap id="BaseResultMap" type="com.example.model.YourModel">
<!-- 其他属性 -->
<result column="FLD_TIMESTAMP" property="timestampField" javaType="java.util.Date"
typeHandler="com.example.handler.TimestampTypeHandler"/>
</resultMap>
```
上述配置指定了当查询结果集中存在名为 FLD_TIMESTAMP 的列时,应将其值通过 `TimestampTypeHandler` 类型处理器解析并赋给实体类中的 timestampField 属性[^1]。
#### 关于注解方式与 XML 方式的选用建议
考虑到维护性和灵活性方面的要求,官方文档推荐优先考虑基于 XML 的配置方案。因为这种方式更直观易懂,并且便于团队协作开发过程中保持一致性[^3]。
阅读全文
相关推荐


















