前阵子遇到了一个问题:sql server 2008数据库的datetime2(7)类型的数据,如何通过hibernate来注解,同时如何将时间格式正确转化,然后正确插入到数据库中?
似乎在网上也没有找到一个有效的方法,一日,忽受一大师指点,然后查看java API文档发现:
java.util.Date还有几个有用的子类,其中timestamp就有如下功能
那么,有一个这么一个好用的Timestamp子类,我们就基本上不需要自己编写转换的工具类了。转化方法如下:
其中,保存用户注册时间的控制器部分代码如下:
@RequestMapping(value="openAccount",method=RequestMethod.POST)
public String openAccount(String realName,String cellphone,String unative,String email,
int userCardType,String userCardNum,String adress,
HttpSession session,HttpServletRequest request,RedirectAttributes reAttributes) {
User user = new User();
user.setRealName(realName);
user.setCelphone(cellphone);
user.setUnative(unative);
user.setEmail(email);
user.setUserCardType(userCardType);
user.setUserCardNum(userCardNum);
user.setAdress(adress);
user.setRegisterDate(Timestamp.valueOf(DateUtil.getNowDate()));//insert now timestamp
System.out.println(Timestamp.valueOf(DateUtil.getNowDate()));
//search the user information,if it not exist,save the user info first
if(!userServiceImpl.isUserNotExist("userCardNum", userCardNum)) {
userServiceImpl.save(user);
}
//set user to session
session.setAttribute("user", user);
//generate the 16 card number
String number = GenerateCardNumUtil.generateNum(16);
// model.addAttribute("bankcarNum", number);
request.setAttribute("bankcarNum", number);
reAttributes.addAttribute("bankcarNum", number);
return "/account/bindCard.jsp";
}
DateUtil类
public class DateUtil {
public static String getNowDate() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.000");
return sdf.format(new Date());
}
public static String getNowTime() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.toString();
}
}
OK,这样,就可以按照我们想要的时间格式将时间戳插入的数据库了!