当前位置: 首页 > news >正文

Springboot+MybatisPlus项目中,数据库表中存放Date,查出后转为String

新增一条记录时,数据库表中会有一个gmt_created 的字段,存放创建时间。
该值在数据库中的默认值为:CURRENT_TIMESTAMP
在对应的JavaBean中,该值为 gmtCreated


那么问题来了:

如何让在表中的Date类型,查出来的时候自动转为 String"yyyy-MM-dd HH:mm:ss") 类型呢?
最好是可以自动全部转换,不要一个个配置mapper.xml文件。

交代一下框架背景:
springboot + mybatis-plus

如下步骤操作即可:

  1. 先编写一个 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;}@Overridepublic void setParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {// 插入操作时不使用}@Overridepublic String getResult(ResultSet rs, String columnName) throws SQLException {return getDateTimeAsString(rs.getTimestamp(columnName));}@Overridepublic String getResult(ResultSet rs, int columnIndex) throws SQLException {return getDateTimeAsString(rs.getTimestamp(columnIndex));}@Overridepublic String getResult(CallableStatement cs, int columnIndex) throws SQLException {return getDateTimeAsString(cs.getTimestamp(columnIndex));}
    }
  2. 在application.yml 中,指定TypeHandler所在的包的位置
    mybatis-plus:type-handlers-package: com.infrastructure.db.DateTimeStringTypeHandler
    
  3. 实体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 格式了!

http://www.lryc.cn/news/417725.html

相关文章:

  • JavaDS —— AVL树
  • NSSCTF练习记录:[SWPUCTF 2021 新生赛]jicao
  • LabVIEW位移检测系统
  • 02、MySQL-DML(数据操作语言)
  • vue3 项目部署到线上环境,初始进入系统,页面卡顿大概一分钟左右,本地正常无卡顿。localStorage缓存1MB数据导致页面卡顿。
  • 软件更新中的风险识别与质量保证机制分析
  • QT下载与安装
  • Java 2.2 - Java 集合
  • Linux驱动.之I2C,iic驱动层(二)
  • 【STM32】USART串口和I2C通信
  • 【Material-UI】按钮组:垂直按钮组详解
  • DDR5 的优势与应用
  • STM32 - 笔记
  • 基于QT实现的简易WPS(已开源)
  • Flask-WTF 表单处理详细教程(第六阶段)
  • C语言 | Leetcode C语言题解之第330题按要求补齐数组
  • 无人机之测绘行业篇
  • Java编程:每日挑战
  • 【自动驾驶】ubuntu server安装桌面版
  • 前端模块化-手写mini-vite
  • SpringBoot中fastjson扩展: 自定义序列化和反序列化方法实战
  • 【QT】鼠标按键事件 - QMouseEvent QKeyEvent
  • 纯手工在内网部署一个Docker私有仓库
  • 农林经济管理学报
  • 【初阶数据结构题目】16.用队列实现栈
  • 使用 OpenAI Whisper v2 模型进行中英文混合语音识别
  • 代码随想录算法训练营day37|动态规划part05
  • Git 如何提交代码
  • SpringBoot-application.properties为对象赋值
  • Head First设计模式学习笔记