MySql和MyBatis日期时间小数秒

时间:2015-01-25 10:39:42

标签: java mysql java-ee mybatis

我使用的是mysql 5.6.14。首先我创造了

CREATE TABLE `TEST` (
  `id` tinyint(3) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `dateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

来自mysql文档

  

要定义包含小数秒部分的列,请使用   语法type_name(fsp),其中type_name是TIME,DATETIME或   TIMESTAMP和fsp是小数秒的精度。例如:

     

创建表t1(t TIME(3),dt DATETIME(6));

     

fsp值(如果给定)必须在0到6的范围内。值为0   表示没有小数部分。如果省略,则为默认值   精度为0.(这与标准SQL默认值6不同,for   与以前的MySQL版本兼容。)

由于我没有定义fsp,这意味着fsp为零 - 没有小数部分。

这是我的mybatis结果映射器:

 <resultMap id="readItemsRM" type="com.Foo">
        <id property="id" column="id"/>
        <result property="dateTime" column="dateTime"/>
  </resultMap>

这是我的Foo类

class Foo{
 private String id;
 private String dateTime
 //getters+setters
}

这是我foo.getDateTime()

时的结果
  

2015-01-21 16:46:03.0

为什么这&#34; .0&#34;出现以及如何避免它?

1 个答案:

答案 0 :(得分:0)

.0的原因是我们告诉MySQL没有小数部分。 将java变量指定为String我们使MyBatis为该参数执行getString(),这就是MySQL JDBC驱动程序格式化值的方式。

相反,有必要将Java变量设置为java.util.Date,并使用SimpleDateFormatter格式化它。