mybatis如何向mysql中插入以及从mysql查询日期格式的数据 |
您所在的位置:网站首页 › date型数据怎么添加 › mybatis如何向mysql中插入以及从mysql查询日期格式的数据 |
一、问题说明
这个问题其实就涉及下面两种情况 java类型转jdbc类型(向数据库插入数据) jdbc类型转java类型(从数据库中查询数据)
这里java类型一般Date用的比较多, jdbc类型一般是DATE(时间精确到日,对应mysql的DATE类型)、TIMESTAMP(时间精确到秒,对应mysql的TIMESTAMP/DATETIME类型) jdbc类型并不直接等同于数据库的数据类型(关于jdbc类型和数据库的数据类型之间的关系,参见https://juejin.cn/post/6844903902446354439)
界定下讨论范围,java类型是java.util.Date,mysql用的是DATETIME类型 二、操作方法 情况一: 现在有张表,mytest,字段为 releaseDate,类型为DATETIME类型 后端java的实体类为Mytest,字段为 releaseDate,类型为java.util.Date,2021-03-22 21:10:05, 1.要把数据插到表里 insert into mytest values(#{releaseDate,jdbcType=TIMESTAMP})2.从数据库中查出来,然后自动设置到releaseDate中 select releaseDate from mytest如果说你存的是DATETIME类型,但是想在DATETIME里存精确到日的日期(如:2021-03-22 00:00:00),直接把上面写的TIMESTAMP改成DATE就好了
情况二: 现在有张表,mytest,字段为 releaseDate,类型为DATETIME类型 后端java的实体类为Mytest,字段为 releaseDate,类型为String,2021-03-22 21:10:05, 1.要把数据插到表里 insert into mytest values(STR_TO_DATE(#{releaseDate},'%Y-%m-%d %H:%i:%s'))2.从数据库中查出来,然后自动设置到releaseDate中 select date_format(releaseDate, '%Y-%m-%d %H:%i:%s') as releaseDate from mytest 三、说明上面情况二其实没啥好说的,完全是借助数据库自带的日期和字符串的转换函数来做到的 情况一的话,估计有很多人和我一样好奇,javaType和JdbcType之间是如何进行转换的 javaType和jdbcType之间的转换关系是在TypeHandlerRegistry中初始化好的 当插入数据时,会进到DefaultParameterHandler中,根据java类型、jdbc类型找到要设置属性的typeHandler,设置到PreparedStatement中 当查询数据时,会进到 看完上面,会发现有个核心的类型转换接口,叫TypeHandler(上面情况一里 java.util.Date和JdbcType的TIMESTAMP之间的相互转换,用的是DateTypeHandler), 从javaType转jdbcType,用的是TypeHandler#setParameter方法;从jdbcType转javaType,用的是TypeHandler#getResult方法 如果说mybatis里自带TypeHandler不符合你的需求,你还可以自己定义,后续有空的话,专门写篇博客详细说说
参考链接:https://juejin.cn/post/6844903902446354439 https://www.jianshu.com/p/33b208400041
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |