CREATE TABLE `user` (
```省略部分代码```
`create_time` datetime NOT NULL COMMENT '创建时间'
```省略部分代码```
)
java
class User {
private Timestamp createTime;
}
java8
import java.sql.Timestamp;
```省略部分代码```
LocalDateTime now = LocalDateTime.now(); // 获取当前日期时间
Timestamp ts = Timestamp.valueOf(now); // 将LocalDateTime转换为Timestamp
System.out.println("当前时间戳为: " + ts.toString());
user.setCreateTime(ts);
```省略部分代码```
低于java8
import java.sql.Timestamp;
```省略部分代码```
Date date = new Date(); // 使用系统当前日期/时间.
long time = date.getTime(); // 获取毫秒级别的时间
Timestamp ts = new Timestamp(time); // 创建Timestamp对象
System.out.println("当前时间戳为: " + ts.toString()); // 输出当前时间戳.
user.setCreateTime(ts);
```省略部分代码```
MySQL的datetime类型存储格式通常是YYYY-MM-DD HH:MM:SS。在Java程序中,我们经常将datetime类型的数据转换成时间戳来方便处理,特别是在涉及到日期时间计算或者比较的时候。
如果需要将Java中的Timestamp对象存储到MySQL的datetime类型列中,你只需要在插入数据时使用适当的SQL语句。同样的,当你从MySQL数据库的datetime类型列中查询数据时,你也可以将其读取为Java的Timestamp对象。
MySQL的JDBC驱动程序可以自动完成Java程序和MySQL数据库之间转换日期时间数据。
Mybatis
如果你在使用MyBatis框架,你仍然可以很方侈地处理和存储时间戳和MySQL中的datetime类型数据。MyBatis的映射文件可以帮助你在Java对象和数据库表之间转换数据。这里有一个简单的例子来展示如何在MyBatis配置中映射datetime:
首先,确保你的实体类中有一个用来表示日期和时间的LocalDateTime字段。例如:
public class User {
private LocalDateTime createTime;
// getters and setters
}
接着,在MyBatis的映射文件中,你可以像这样设置一个插入操作:
<insert id="save" parameterType="User">
INSERT INTO your_table (create_time) VALUES (#{createTime})
</insert>
MyBatis会自动处理LocalDateTime和MySQL datetime类型之间的转换。当运行这个插入命令时,你的LocalDateTime值会被正确转换并存储在数据库的datetime列中。
对于查询操作,MyBatis也会自动将查询结果从数据库的datetime类型转换为Java的LocalDateTime类型:
<select id="select" resultType="User">
SELECT create_time FROM user
</select>
在配置好映射之后,可以直接在你的Mapper接口中定义方法,然后像平时一样调用这些方法来执行数据库操作。MyBatis会负责幕后的类型转换工作。
注:
mybatis3.4.0版本报错
No typehandler found for property createTime