@JFinal 你好,想跟你请教个问题:
JFinal查询表记录总数报错:
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
我是这样写的:
public class User extends Model<User> {
public static final User me = new User();
public int queryRegistCount(){
String sql = "select count(1) as count from user";
return super.findFirst(sql).getInt("count");
}
}
这里是详细报错信息:
[ERROR]-[Thread: 497276299@qtp-438546438-0]-[com.jfinal.core.ActionHandler.handle()]: /
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
at com.jfinal.plugin.activerecord.Model.getInt(Model.java:187)
at com.jelly.bbs.model.User.queryRegistCount(User.java:52)
at com.jelly.bbs.controller.IndexController.index(IndexController.java:58)
真是不知道问题出在哪里,是我使用不当吗?
请求各位大侠指导下啊,谢谢了!
不用getInt了,直接返回findFirst()就可以了,不过要用Integer接收,不然如果没有数据的话会返回null,也是会报错的
sql中带有count(1)这个函数,所以jdbc会自动将结果由Integer升为Long,所以要使用getLong(...)来获取值,类似的情况还有selectsum(filed)也会升为Long,原因是防止sum这类函数得到的结果用Integer存放不下,造成数值溢出。具体到你的这个需求,使用Longcount=Db.queryLong("selectcount(1)fromuser");更加方便。类似这样的统计数据的功能,使用Db.queryXxx(...)系列方法极好版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。