我使用的是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;出现以及如何避免它?
答案 0 :(得分:0)
.0的原因是我们告诉MySQL没有小数部分。 将java变量指定为String我们使MyBatis为该参数执行getString(),这就是MySQL JDBC驱动程序格式化值的方式。
相反,有必要将Java变量设置为java.util.Date,并使用SimpleDateFormatter格式化它。