如何使用 jdbcTemplate 在对象数组中插入 10 个间隔“10 分钟”

问题描述

我的查询是:

final String sSelectQuery = "SELECT COUNT(*) FROM ADMIN.SESSION_TBL WHERE lastmodified > (Now() - INTERVAL '"
                + userSessionExpireTime + " MINUTE') AND userid= ?  ";
        return getJdbcTemplate().queryForObject(sSelectQuery,new Object[]{userId},Integer.class);

在 userSessionExpireTime = 10 中的位置。 如果我想在不附加变量 userSessionExpireTime 并放置“?”的情况下实现相同的目标反而。 我怎样才能实现它?

我试过了:

SELECT COUNT(*) FROM ADMIN.SESSION_TBL WHERE lastmodified > (Now() - INTERVAL '? MINUTE') AND userid= ? 

return getJdbcTemplate().queryForObject(sSelectQuery,new Object[]{userSessionExpireTime,userId},Integer.class);

但我得到的列超出范围。

有人可以帮忙吗?

解决方法

您可以使用make_interval()

SELECT COUNT(*) 
FROM ADMIN.SESSION_TBL 
WHERE lastmodified > NOW() - make_interval(mins => ?) 
AND userid = ? 

如果 Spring JDBC 模板在 => 运算符上阻塞,请使用不带命名参数的变体:

SELECT COUNT(*) 
FROM ADMIN.SESSION_TBL 
WHERE lastmodified > NOW() - make_interval(0,?) 
AND userid = ?