Sql SpringJDBCTemplate查询始终返回null,而与数据库中的数据无关

Sql SpringJDBCTemplate查询始终返回null,而与数据库中的数据无关,sql,spring,jdbctemplate,Sql,Spring,Jdbctemplate,我需要根据日期范围从数据库中获取一个求和值。我尝试通过以下方式使用SpringJDBCTemplate。但它不会返回任何东西 public void getTotal(String from, string toDate){ String totalSql="select sum(b.finalAmount) as total from example a, example b "+ "where a.created >= TO_TIMESTAM

我需要根据日期范围从数据库中获取一个求和值。我尝试通过以下方式使用SpringJDBCTemplate。但它不会返回任何东西

public void getTotal(String from, string toDate){
    String totalSql="select  sum(b.finalAmount) as total from example a, example b "+ 
                "where a.created >= TO_TIMESTAMP(:fromDate, 'MM-DD-YYYY') AND a.created < TO_TIMESTAMP(:toDate, 'MM-DD-YYYY hh24:mi:ss') "+
                "and a.tradein_id=b.tradein_id";

    List<Integer> checkAmt =  jdbcTemplate.query(sql, new RowMapper<Integer>()   {

        @Override
        public Integer mapRow(ResultSet rs, int rowNum) throws SQLException
        {
            int check = rs.getInt("TOTAL");
            return check;

        }
    }, fromDate,toDate);


    int checkAmount = jdbcTemplate.queryForObject(
            totalSql, new Object[]{fromDate, toDate},Integer.class);
}
public void getTotal(String from,String toDate){
String totalSql=“从示例a、示例b中选择总和(b.finalAmount)作为总计”+
其中a.created>=TO_时间戳(:fromDate,'MM-DD-YYYY')和a.created
当我在查询中硬编码fromDate和toDate时,效果很好。我假设我发送的选择参数有问题


from date和todate都是2016年9月8日格式前端的字符串值。

SQL使用命名参数,但代码发送参数列表。使用NamedParameterJdbcTemplate并更改传入参数的方式,或者使用JdbcTemplate并更改SQL以使用
占位符而不是命名参数

如果使用NamedParameterJdbcTemplate,则必须在SQL中按名称引用参数,并且在传递参数时必须提供名称。把它们放在地图上,像这样(从):

或者,您可以提供如下参数:

Map args = new HashMap();
args.put("fromDate", fromDate);
args.put("toDate", toDate);
jdbcTemplate.queryForObject(sql, args, Integer.class); 
如果不想使用命名参数,请将SQL更改为

String totalSql= "select sum(b.finalAmount) as total from example a, example b "+ 
"where a.created >= TO_TIMESTAMP(?, 'MM-DD-YYYY') AND a.created < TO_TIMESTAMP(?, 'MM-DD-YYYY hh24:mi:ss') "+
"and a.tradein_id=b.tradein_id"
String totalSql=“从示例a、示例b中选择sum(b.finalAmount)作为总计”+
其中a.created>=TO_时间戳(?'MM-DD-YYYY')和a.created

剩下的就不用管了。

我已经更新了描述,romDate和toDate是前端的字符串格式。例如:09/07/2016queryForObject不能与我得到的SqlParameterSource类型错误一起使用。@sanvica:那么听起来你好像没有使用NamedParameterJdbcTemplate。在这种情况下,您可以将命名参数替换为?占位符。
String totalSql= "select sum(b.finalAmount) as total from example a, example b "+ 
"where a.created >= TO_TIMESTAMP(?, 'MM-DD-YYYY') AND a.created < TO_TIMESTAMP(?, 'MM-DD-YYYY hh24:mi:ss') "+
"and a.tradein_id=b.tradein_id"