1. 程式人生 > >sql server 2008 datetime型別如何通過hibernate註解,且正確插入

sql server 2008 datetime型別如何通過hibernate註解,且正確插入

前陣子遇到了一個問題: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,這樣,就可以按照我們想要的時間格式將時間戳插入的資料庫了!