各位同学啊,
我写了一个论坛登录用户的实体类User,
public class User{
private String name;
private int id;
private String password;
private Date lastLoninTime;
private Date registDate;
//省略相关getter/setter
}
设计大概是jsp-->servlet-->service-->dao-->oracle,用的是ORACLE数据库,想要的结果是用户上次登陆时间类似于:2008-09-07 11:23:45 格式的日期时间类型,而用户的注册时间类似于2008-09-03格式的,请问
1,我的User类中lastLoninTime用的是java.sql.Date还是java.util.Date?registDate呢?
2,另外还有两个日期时间类java.text.Calendar和TIMESTAMP,这两个怎么样?
3,在数据库中,User类对应的表Tuser中,lastLoninTime字段和registDate字段的字段类型是用Date类型?还是TIMESTAMP类型?INTERVAL类型?
我写了一个论坛登录用户的实体类User,
public class User{
private String name;
private int id;
private String password;
private Date lastLoninTime;
private Date registDate;
//省略相关getter/setter
}
设计大概是jsp-->servlet-->service-->dao-->oracle,用的是ORACLE数据库,想要的结果是用户上次登陆时间类似于:2008-09-07 11:23:45 格式的日期时间类型,而用户的注册时间类似于2008-09-03格式的,请问
1,我的User类中lastLoninTime用的是java.sql.Date还是java.util.Date?registDate呢?
2,另外还有两个日期时间类java.text.Calendar和TIMESTAMP,这两个怎么样?
3,在数据库中,User类对应的表Tuser中,lastLoninTime字段和registDate字段的字段类型是用Date类型?还是TIMESTAMP类型?INTERVAL类型?
如果只有年月日,我则用 java.sql.Date
因为在业务逻辑中,java.util.Date应用更加的广泛,在jdk中,java.sql.Date继承自java.util.Date可能本身就是一个不良设计。其次针对你的问题,你应该看看数据库中的各种类型到底能精确到什么程度。写几个例子做一下实验不会浪费太多时间。另外即使数据库中是相同的类型,你用jdbc往数据库里插入日期时用java.sql.Date或者java.sql.Timestamp,最后在数据库中的结果有可能也是不同的。
java.util.Date 是 java.sql.Date 的父类(注意拼写)
前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他
后者之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java.sql.Date
转换是
java.sql.Date date=new Java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());
一起学习吧。
csdn真是高手如云呀。
o(∩_∩)o...
可以都用java.util.Date,到底是精确到时间,还是仅仅需要日期,可以让Servlet进行处理。
在需要精确时,使用new Date();
只需要日期时,使用SimpleDateFormat进行一下处理。
2,另外还有两个日期时间类java.text.Calendar和TIMESTAMP,这两个怎么样?
这两个俺都没有用过。不过现在的SUN JDK文档里,明确提出了不推荐继续使用java.util.Date,而推荐使用java.util.Calendar.
但是现在大家基本都仍然在用Date类。
如果需要对网站进行国际化,需要处理时差等问题时,Calendar的优势就表现出来了。
3,在数据库中,User类对应的表Tuser中,lastLoninTime字段和registDate字段的字段类型是用Date类型?还是TIMESTAMP类型?INTERVAL类型?
数据库里采用Date类型。
如果使用hibernate联系数据库,可以在*.hbm.xml中配置长度为10就足够了。Good luck!
如果日期带有年月日时分秒,我一般使用java.sql.Timestamp
如果只有年月日,我则用 java.sql.Date
public void save(final User person) {
jdbcTemplate.update("insert into person(id,name,registDate,lastLoninTime,password) values(?,?,?,?,?,?)", new PreparedStatementSetter(){
public void setValues(PreparedStatement ps)throws SQLException{
ps.setInt(1,User.nextval);
ps.setString(2,person.getName());
ps.setDate(3,sysdate);
ps.setDate(4,null);
ps.setString(5,person.getPassword());
}
}); }
结果是,ps.setInt(1,User.nextval);和ps.setDate(3,sysdate);提示有错误,为何?其中我已经在oracle中create sequence User了
后者之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第 2个参数都是java.sql.Date
我也认为实体的属性应该用util.date 这样更符合。