Springboot+MybatisPlus项目中,数据库表中存放Date,查出后转为String
以上三步,就可以实现让所有的gmtCreate 从表里取出后即为 String 的 yyyy-MM-dd HH:mm:ss 格式了!最好是可以自动全部转换,不要一个个配置。新增一条记录时,数据库表中会有一个。类型,查出来的时候自动转为。的字段,存放创建时间。
·
新增一条记录时,数据库表中会有一个gmt_created
的字段,存放创建时间。
该值在数据库中的默认值为:CURRENT_TIMESTAMP
在对应的JavaBean
中,该值为 gmtCreated
,
那么问题来了:
如何让在表中的Date
类型,查出来的时候自动转为 String
("yyyy-MM-dd HH:mm:ss"
) 类型呢?
最好是可以自动全部转换,不要一个个配置mapper.xml
文件。
交代一下框架背景:
springboot + mybatis-plus
如下步骤操作即可:
- 先编写一个 TypeHandler 类
import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedJdbcTypes; import org.apache.ibatis.type.MappedTypes; import org.apache.ibatis.type.TypeHandler; import java.sql.*; import java.text.SimpleDateFormat; @MappedTypes(String.class) @MappedJdbcTypes(JdbcType.DATE) public class DateTimeStringTypeHandler implements TypeHandler<String> { private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private String getDateTimeAsString(Timestamp timestamp) { if (timestamp != null) { return dateFormat.format(timestamp); } return null; } @Override public void setParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException { // 插入操作时不使用 } @Override public String getResult(ResultSet rs, String columnName) throws SQLException { return getDateTimeAsString(rs.getTimestamp(columnName)); } @Override public String getResult(ResultSet rs, int columnIndex) throws SQLException { return getDateTimeAsString(rs.getTimestamp(columnIndex)); } @Override public String getResult(CallableStatement cs, int columnIndex) throws SQLException { return getDateTimeAsString(cs.getTimestamp(columnIndex)); } }
- 在application.yml 中,指定TypeHandler所在的包的位置
mybatis-plus: type-handlers-package: com.infrastructure.db.DateTimeStringTypeHandler
- 实体Bean的写法
@Data @TableName(value = "social_follow") public class SocialFollow implements Serializable { private Long id; private String followedUid; private String fansUid; @TableField(value = "gmt_created", typeHandler = DateTimeStringTypeHandler.class) private String gmtCreated;
注:
- 数据表结构:
CREATE TABLE `social_follow` (
`id` bigint NOT NULL,
`followed_uid` varchar(45) DEFAULT NULL COMMENT '被关注用户标识',
`fans_uid` varchar(45) DEFAULT NULL COMMENT '粉丝用户标识',
`gmt_created` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `IDX_UNIQUE` (`followed_uid`,`fans_uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='朋友圈关注'
- mapper.xml文件:(空的)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.social.SocialFollowMapper">
</mapper>
以上三步,就可以实现让所有的gmtCreate 从表里取出后即为 String 的 yyyy-MM-dd HH:mm:ss 格式了!
更多推荐
已为社区贡献1条内容
所有评论(0)