oracle查询无效的列类型,JdbcTemplate类的查询参数类型错误:无效列类型

public List getUsersForGrid(int rows, int page, String sidx,

String sord) {

int fromRecord = 0;

int toRecord = 0;

toRecord = page * rows;

fromRecord = (page - 1) * rows;

StringBuilder sqlB = new StringBuilder();

sqlB.append("SELECT user_id, username ");

sqlB.append("FROM users ");

sqlB.append("WHERE :fromRecord <= rownum AND rownum <= :toRecord ");

sqlB.append("ORDER BY %s %s ");

String sql = String.format(sqlB.toString(), sidx, sord);

MapSqlParameterSource params = new MapSqlParameterSource();

params.addValue("fromRecord", fromRecord);

params.addValue("toRecord", toRecord);

List> rsRows = this.jdbcTemplate.queryForList(sql

.toString(),params);

List users = new ArrayList();

for (Map row : rsRows) {

BigDecimal id = (BigDecimal) row.get("user_id");

String username = (String) row.get("username");

User user = new User(id.intValue(), username);

users.add(user);

}

return users;

}

,并得到java.sql.SQLException: Invalid column type

SIDX是列内特( “USER_ID” 为例)SORD是ASC /降序

当通过没有PARAMS(仅执行

sql.append("SELECT user_id, username ");

sql.append("FROM users ");

)EV一切都好。

更新:兼容于:

sqlB.append("WHERE ? <= rownum AND rownum <= ? ");

this.jdbcTemplate.queryForList(sql.toString(),new Object[]{fromRecord, toRecord});

好像与Spring MapSqlParameterSource和命名参数的问题。我使用Spring 3.1.3

DB是Oracle 11.2

describe users;

Name Null Type

------------------------------ -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

USER_ID NOT NULL NUMBER

USERNAME NOT NULL VARCHAR2(40)

PASSWORD NOT NULL VARCHAR2(20)

ENABLED NOT NULL NUMBER

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值