web开发一些常遇到的问题汇总

1、在使用Json-lib包将json对象转换成javaBean时---比如方法 JSONArray.toList(JsonArray, Clazz)或者JSONObject.toBean(jsonObject, ItemInfo.class);---对于日期需要注册日期处理器,如果未加处理器,会将转化不了的日期转化为当前时间
处理器注册参考代码如下:
String[] dateFormats = new String[]{"yyyy-MM-dd HH:mm:ss.S", "yyyy-MM-dd HH:mm:ss"};  
JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
List<ApplicationRequest> openReqApps = JSONArray.toList(JSONArray.fromObject(openReqAppsStr), ApplicationRequest.class);

2、在使用hibernate进行查询从A(起始时期)到B(结束日期)的纪录时,可能会使用HQL:  startDate >= :startDate,然后使用一个时间类型来替换参数
startDate :query.setDate("startDate ",startDate );
如 果数据库中字段类型为timestamp,那么查询2005-11-23到2005-11-23的纪录时不会出现2005-11-23那一天的纪录,哪怕 你的比较符号用的是>=和<=;因为数据库中的2005-11-23的纪录是这样的格式2005-11-23 15:35:48:253,而query.setDate设置一个时间参数进去,他是用这个时间比较的2005-11-23 00:00:00 000,
所以因该用query.setTimeStamp("startDate ",startDate );

Hibernate在保存和更新Date类型的数据到数据库的时候,如果设置不当,会舍弃时分秒,和数据库中Date类型的精确度不符(如Oracle的Date是带时分秒的).
引起的原因主要是mapping文件中的字段类型被设成了type="date",而mapping文件一般都是通过hibernate提供的工具生成的,hibernate提供的工具默认把数据库端date型的字段设成type="date".从而Hibernate在用JDBC做数据库更新的时候会用 statement的setDate(index, sqlDate),插入数据库的日期只有年月日.
其他使用时需要注意的问题:
1,如果是用Hibernate的对象来影射数据库操作(save,load..),需要将mapping文件的type="date"改成type="timestamp".
2,如果用Query(session的createQuery和createSQLQuery),在赋值的时候用query.setTimestamp(0, new Date());
本段来自:http://blog.csdn.net/woshisap/article/details/6543027

你可能感兴趣的:(web开发一些常遇到的问题汇总)