hibernate使用mysql中时间的数据类型

来源:互联网 发布:微信物业管理系统源码 编辑:程序博客网 时间:2024/06/16 11:21

MySQL 日期类型:日期格式、所占存储空间、日期范围 比较。
日期类型        存储空间       日期格式                 日期范围
------------ ---------   --------------------- -----------------------------------------
datetime       8 bytes   YYYY-MM-DD HH:MM:SS   1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp      4 bytes   YYYY-MM-DD HH:MM:SS  1970-01-01 00:00:01 ~ 2038
date           3 bytes   YYYY-MM-DD           1000-01-01          ~ 9999-12-31
year           1 bytes   YYYY                   1901                ~ 2155

在 MySQL 中创建表时,对照上面的表格,很容易就能选择到合适自己的数据类型。但是选择 datetime 还是 timestamp,可能会有点犯难。这两个日期时间类型各有优点:datetime 的日期范围比较大;timestamp 所占存储空间比较小,只是 datetime 的一半。另外,timestamp 类型的列还有个特性:默认情况下,在 insert, update 数据时,timestamp 列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。“自动”的意思就是,你不去管它,MySQL 会替你去处理。 


1、date类型

可以在hibernate中对应String数据类型(个人愚见)

2、datetime类型我一般不会选timestamp 类型它对应的存储空间较小

package com.model;// default packageimport java.sql.Timestamp;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import static javax.persistence.GenerationType.IDENTITY;import javax.persistence.Id;import javax.persistence.Table;/** * 数据库表datetime的实体类 * @author 王校兵 * @version 1.0,2015-11-26 */@Entity@Table(name = "datetime", catalog = "hibernatedemo")public class Datetime implements java.io.Serializable {// Fieldsprivate Integer did;private Timestamp timedatetime;// Constructors/** default constructor */public Datetime() {}/** full constructor */public Datetime(Timestamp timedatetime) {this.timedatetime = timedatetime;}// Property accessors@Id@GeneratedValue(strategy = IDENTITY)@Column(name = "did", unique = true, nullable = false)public Integer getDid() {return this.did;}public void setDid(Integer did) {this.did = did;}@Column(name = "timedatetime", nullable = false, length = 19)public Timestamp getTimedatetime() {return this.timedatetime;}public void setTimedatetime(Timestamp timedatetime) {this.timedatetime = timedatetime;}}
对应的Java测试类
<pre name="code" class="java">package com.dao;import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import org.hibernate.Session;import org.hibernate.Transaction;import com.model.Datetime;import com.model.Time;import com.util.HibernateSessionFactory;/** * 向数据库中插入数据datetime类型插入测试 * @author 王校兵 * @version 1.0,2015-11-26 * */public class InsertDateTimeDao {public static void main(String[] args) {//当前时间时间戳/*Timestamp t = new Timestamp(System.currentTimeMillis());System.out.println("Timestamp----   " + t);*///自己创建时间戳Timestamp t = Timestamp.valueOf("2015-1-26 19:23:18.575"); System.out.println("Timestamp.valueOf(2015-11-26 19:53:18.575)--    " + t);Session session = HibernateSessionFactory.getSession();Transaction ts = session.beginTransaction();Datetime dt = new Datetime();dt.setTimedatetime(t);session.save(dt);org.hibernate.Query query = session.createQuery("from Datetime");List list = query.list();ts.commit();HibernateSessionFactory.closeSession();for(Object ele:list){Datetime d = (Datetime)ele;System.out.println(d.getTimedatetime());}}}


3、year个人感觉还不如String类型好使(个人愚见)

0 0
原创粉丝点击