MyBatis实现 Java 实体类和数据库中日期类型之间的转换(超详细)

这篇具有很好参考价值的文章主要介绍了MyBatis实现 Java 实体类和数据库中日期类型之间的转换(超详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

数据库存储的时间字段的类型是datetime
Java实体类的时间字段类型是Date
需求:响应前端的时间字段格式为”yyyy-MM-dd HH:mm:ss“

步骤

1、定义resultMap

定义 Java 对象和数据库表字段的对应关系,在 mapper.xml 文件中使用 #{属性名,jdbcType=数据库字段类型} 来进行参数传递和结果集映射,例如:

<resultMap id="userResultMap" type="User">
    <id column="id" property="id" jdbcType="INTEGER"/>
    <result column="name" property="name" jdbcType="VARCHAR"/>
    <result column="age" property="age" jdbcType="INTEGER"/>
    <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
</resultMap>

2、实体类时间字段上添加JsonFormat注解

@JsonFormat日期格式化你的pattern格式,timezone设置时区

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;

:时区也可以在application.yml或application.propertites配置文件中添加,一劳永逸,@JsonFormat就不需要配置timezone了

spring:
  jackson:
    time-zone: Asia/Shanghai

特殊解决方式如下

步骤1和2没有解决的话,继续如下三个步骤

3、自定义类型处理器(MyBatis支持)

public class MyDateTypeHandler 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 date, JdbcType jdbcType) throws SQLException {
        if (date == null) {
            ps.setNull(i, jdbcType.TYPE_CODE);
        } else {
            ps.setString(i, sdf.format(date));
        }
    }

    @Override
    public Date getResult(ResultSet rs, String columnName) throws SQLException {
        Timestamp ts = rs.getTimestamp(columnName);
        return ts == null ? null : new Date(ts.getTime());
    }

    @Override
    public Date getResult(ResultSet rs, int columnIndex) throws SQLException {
        Timestamp ts = rs.getTimestamp(columnIndex);
        return ts == null ? null : new Date(ts.getTime());
    }

    @Override
    public Date getResult(CallableStatement cs, int columnIndex) throws SQLException {
        Timestamp ts = cs.getTimestamp(columnIndex);
        return ts == null ? null : new Date(ts.getTime());
    }
}

4、将类型处理器Bean注入容器(在MyBatis配置类中)

@Configuration
@MapperScan({"com.example.mapper"})
public class MyBatisConfig {
    @Bean
    public TypeHandler<Date> myDateTypeHandler() {
        return new MyDateTypeHandler();
    }
}

5、mapper.xml文件中修改

<resultMap id="myResultMap" type="com.example.MyResultType">
  <id property="id" column="id" />
  <result property="createTime" column="create_time" typeHandler="com.example.MyDateTypeHandler"/>
</resultMap>

结果SUCCESS

mybatis日期查询要转换吗?,Java,mybatis,java,数据库,spring,database

结束语:当你在做你热爱的事情时,你永远不会感到疲惫。文章来源地址https://www.toymoban.com/news/detail-829487.html

到了这里,关于MyBatis实现 Java 实体类和数据库中日期类型之间的转换(超详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java】Mybatis查询数据库

    经过前面的学习Spring系列的操作已经差不多了,接下来我们继续学习更加重要的知识,将前端传递的参数存储起来,或者查询数据库里面的数据 MyBatis是款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis几乎祛除了所有的JDBC代码以及设置参数和获取结果集

    2024年01月18日
    浏览(38)
  • 【IDEA使用指南】使用Hibernate框架的Java项目,如何通过数据库表自动生成实体模型?

    步骤1:找到并打开“Persistence”工具栏。 如下图所示,找到 “View - Tool Windows - Persistence”,点击“Persistence”。 步骤2:找到并打开“Import Database Schema” 窗口。 在开发工具左下角会弹出持久化配置的工具栏“Persistence”,如下图所示。单击之后有一个弹框,找到弹框中的项

    2024年02月05日
    浏览(51)
  • MyBatis操作数据库实现

    说明:MyBatis是作用于三层架构开发,数据访问层(Data Access Object)的框架,用于访问数据库,对数据进行操作。 首先,创建一个SpringBoot模块,然后把MyBatis的环境搭建起来。因为MyBatis是作用于Dao层的,故先省去Service层,重点关注Dao层中与数据库的交流。 (1)创建Springboot模

    2024年02月08日
    浏览(42)
  • Java实体类属性和数据库字段都是大写字母,为什么返回给前端会变成小写字母

    最近我在开发系统的过程中发现了一个问题,我数据库中数据表的字段名使用的全是大写字母,Java实体类中属性也都是大写字母,但是返回给前端的时候所有属性名却变成了小写的。 我查阅资料后解决了问题,因此记录下来,避免以后再次踩坑。 数据库字段的字段名是大写

    2024年02月14日
    浏览(37)
  • Java EE 突击 13 - MyBatis 查询数据库(2)

    这个专栏给大家介绍一下 Java 家族的核心产品 - SSM 框架 JavaEE 进阶专栏 Java 语言能走到现在 , 仍然屹立不衰的原因 , 有一部分就是因为 SSM 框架的存在 接下来 , 博主会带大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相关知识点 并且带领大家进行环境的配置 , 让大家真正用好

    2024年02月11日
    浏览(37)
  • Java项目:ssm框架基于spring+springmvc+mybatis框架的民宿预订管理系统设计与实现(ssm+B/S架构+源码+数据库+毕业论文)

    本项目是一套ssm827基于SSM框架的民宿预订管理系统设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse 确保可以运行! 该系统功能

    2024年01月22日
    浏览(68)
  • Maven和MyBatis框架简单实现数据库交互

    MyBatis是一种基于Java语言的持久层框架,它的主要目的是简化与数据库的交互过程。MyBatis通过XML或注解配置来映射Java对象和数据库表之间的关系,并提供了灵活的查询方式和结果集处理机制。MyBatis还提供了事务管理、缓存机制、插件扩展等特性。 使用MyBatis可以将SQL语句和

    2024年01月17日
    浏览(38)
  • Springboot mybatis generate 自动生成实体类和Mapper

    运行MyBatisGeneratorApp类即可实现自动生成实体类、mapper接口、mapper.xml 1、pom文件引入依赖 2、自定义 lombok 插件类 LombokPlugin.java 3、添加 generatorConfig.xml 配置文件 4、Generator 启动类 MyBatisGeneratorApp.java

    2024年02月09日
    浏览(37)
  • Spring Boot + MyBatis-Plus实现数据库读写分离

    🎉Spring Boot + MyBatis-Plus实现数据库读写分离 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:架构设计 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水平有限,如果文中出现错误,希望

    2024年02月05日
    浏览(53)
  • 根据源码,模拟实现 RabbitMQ - 通过 SQLite + MyBatis 设计数据库(2)

    目录 一、数据库设计 1.1、数据库选择 1.2、环境配置 1.3、建库建表接口实现 1.4、封装数据库操作 1.5、针对 DataBaseManager 进行单元测试 1.6、心得 MySQL 是我们最熟悉的数据库,但是这里我们选择使用 SQLite,原因如下: SQLite 比 MySQL 更轻量:一个完整的 SQLite 数据库,只有一个单

    2024年02月13日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包