我正在基于Spring的Java项目中实现密码恢复功能。这是我的方法
UUID
令牌,并将其与用户输入的电子邮件地址一起保存在数据库表中。此外,到期时间将作为Timestamp
值UUID
令牌自动将用户的电子邮件地址设置为文本字段。
在这里,我需要检查到期时间是否到期。为此,我需要将当前时间的Timestamp value
与使用Timestamp value
UUID token.
进行比较
醇>
我使用此代码段来检索到期时间的timestamp
值。
@Override
public String checkValidityOfToken(UUID token) {
System.out.println("INFO:token in Login Dao Impl = "+token);
java.sql.Timestamp ex_time;
try{
String sql = "SELECT expiray_time FROM recover_password WHERE token = "+token;
ex_time = getJdbcTemplate().queryForObject(sql, java.sql.Timestamp);
System.out.println("INFO: first total = "+ex_time);
}catch(Exception exx){
System.out.println("error while taking saved time count for a matching token "+exx);
}
}
虽然当我点击java.sql.Timestamp
时,Eclipse建议queryForObject()
ctrl+space
,但是Eclipse在那里显示错误。这是为什么。
这项任务的正确代码段是什么。
然后我用了这个,
String sql = "SELECT expiray_time FROM recover_password WHERE token = ?";
ex_time = getJdbcTemplate().queryForObject( sql, new Object[] { token }, java.sql.Timestamp);
在这种情况下,也无法识别java.sql.Timestamp
。包含上述方法的类扩展了`SimpleJdbcDaoSupport。
或
我是否使用错误的方法检查密码重置链接的有效性?如果是这样,实施它的好方法是什么?
答案 0 :(得分:1)
queryForObject(String, Class)
方法将Class
实例作为其第二个参数。因此,正确的语法是:
getJdbcTemplate().queryForObject(sql, java.sql.Timestamp.class);
您使用的代码不是有效的Java代码,这就是它无法编译的原因。