我通过注释使用myBatis从我的服务器获取数据。尝试获取数据 n 天,注释:
@Select("SELECT o.title from user_order o where current_date - date_trunc('day', o.dateoforder) < '#{n} days'")
ArrayList<OrderRecord> getOrderHistory(@Param("n") int n);
返回错误:
列索引超出范围:1,列数:0。错误 查询数据库。原因:org.postgresql.util.PSQLException: 列索引超出范围:1,列数:0。
此外,
@Select("SELECT o.title from user_order o where current_date - date_trunc('day', o.dateoforder) < #{n}")
ArrayList<OrderRecord> getOrderHistory(@Param("n") String n);
当n类似于“5天”时,产生类似的错误。
预期的数据类型是什么?
我正在使用PostgreSQL。
答案 0 :(得分:3)
Mybatis期待一个interval参数,不能自动将整数或String强制转换为它。
需要传递 PGInterval 类型的对象。
PGInterval pginterval = new PGInterval("5 days");
并且注释必须是:
@Select("SELECT o.title from user_order o where current_date - date_trunc('day', o.dateoforder) < #{n}")
ArrayList<OrderRecord> getOrderHistory(@Param("n") PGInterval n);
答案 1 :(得分:2)
每this link,您还可以将值转换为SQL中的间隔。例如,这就是我在我的应用程序中使用的内容:now() + CAST(#{my_interval} AS INTERVAL)
。
其中&#39; my_interval&#39;是第5天&#39;字符串。