5
回答
Jfinal Db使用问题
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

我想执行一个sql语句 计算出一周内每个人的合计记录 sql是

select user_id USER_ID, SUM(earnmoney) EARN_MONEY from wap_earnrecord where time >= date_add(now(), interval -7 day) order by EARN_MONEY desc

问题,我怎么执行这个语句 能得到一个含有USERID和earnmoney的对象列表?

Db.find?

Db.query?

但我发现返回的类型都不如意啊~

举报
leavegee
发帖于2年前 5回/341阅
共有5个答案 最后回答: 2年前

  如果希望结果封装成 Record 对象,则使用 Db.find(...),否则用 Db.query(...),返回类型是直接保持了 JDBC 自动提供的类型,jfinal 未做干预。

    类似于sql 中 sum(...) 这些函数的返回值,考虑到数值可能溢出的情况, JDBC 会自动将int 字段的 sum(...) 结果返回为 long 型,这些 jfinal 仍然都未曾干预过

引用来自“JFinal”的评论

  如果希望结果封装成 Record 对象,则使用 Db.find(...),否则用 Db.query(...),返回类型是直接保持了 JDBC 自动提供的类型,jfinal 未做干预。

    类似于sql 中 sum(...) 这些函数的返回值,考虑到数值可能溢出的情况, JDBC 会自动将int 字段的 sum(...) 结果返回为 long 型,这些 jfinal 仍然都未曾干预过

谢谢J大.是的.我是用的Db.query,但是这个函数返回的是一个List<Object>,我拿到Object后怎么取到id和money啊?

引用来自“JFinal”的评论

  如果希望结果封装成 Record 对象,则使用 Db.find(...),否则用 Db.query(...),返回类型是直接保持了 JDBC 自动提供的类型,jfinal 未做干预。

    类似于sql 中 sum(...) 这些函数的返回值,考虑到数值可能溢出的情况, JDBC 会自动将int 字段的 sum(...) 结果返回为 long 型,这些 jfinal 仍然都未曾干预过

引用来自“leavegee”的评论

谢谢J大.是的.我是用的Db.query,但是这个函数返回的是一个List<Object>,我拿到Object后怎么取到id和money啊?

使用 Db.query 时,由于不会封装为 Record,所以只能按照 sql 中 select x,y,z 的次序来取,如:

List<Object[]> list = Db.query("select a,b,c from t");
for (Object[] o : list) {
  Object a = o;
  Object b = o;
  Object c = o;
}



   由于你需要按名称来取,建议还是用 Db.find 为好

引用来自“JFinal”的评论

  如果希望结果封装成 Record 对象,则使用 Db.find(...),否则用 Db.query(...),返回类型是直接保持了 JDBC 自动提供的类型,jfinal 未做干预。

    类似于sql 中 sum(...) 这些函数的返回值,考虑到数值可能溢出的情况, JDBC 会自动将int 字段的 sum(...) 结果返回为 long 型,这些 jfinal 仍然都未曾干预过

引用来自“leavegee”的评论

谢谢J大.是的.我是用的Db.query,但是这个函数返回的是一个List<Object>,我拿到Object后怎么取到id和money啊?

引用来自“JFinal”的评论

使用 Db.query 时,由于不会封装为 Record,所以只能按照 sql 中 select x,y,z 的次序来取,如:

List<Object[]> list = Db.query("select a,b,c from t");
for (Object[] o : list) {
  Object a = o;
  Object b = o;
  Object c = o;
}



   由于你需要按名称来取,建议还是用 Db.find 为好

搞定,非常感谢J大的回复.jfinal很贴心
我也碰到这个问题,用Db.find(sql),返回List<Record>,里面的record对象可以在页面直接用${record.attrName}输出值的。
顶部