2016-09-01 12:01

如果 sql 中针对 int(11) 的字段进行了函数操作,jdbc 为了防止数值溢出,会将 Integer 转成 Long 型,例如:
1:假定有个收入金额字段 int(11) income
2:select income from xxx 这类查询不会将 int 升级为 long
3:select sum(income) form xxx 这类查询计算所有 income 字段的总和,就很可以有造成数值溢出,所以安全起见 jdbc 会自动升为 Long 型
4:整个类型升级过程 jfinal 并未干预过,完全交由 JDBC 自动完成
此外,类似 count(x) 这样的函数也会有这样的行为

2016-08-31 21:50

配置问题,JDK 与 JRE 是不同的,前者有 javac 这个编译程序,后者没有,而 jsp 文件是需要 javac 动态编译成 classes 的,所以改一下 eclipse、IDEA 中的配置就可以

2016-08-31 19:00

感谢你的分享,内容可以随时修改的,所以提交后不用担心, ctrl + 回车就可以提交是为了让用户体验更好,回贴的功能也是可以 ctrl + 回车快捷回复的。
虽然问题是解决了,但是为啥会是 byte 类型呢? 是不是 tinyint(1) 引发的,此外,用 count(*) 有没有问题?

2016-08-31 17:57

具体的 sql 是怎么样的? 相应的数据表字段如果是 tinyint(1) 建议改为 tinyint(2),因为 jdbc 会将 tinyint(1) 自动转换为 boolean 类型,但也不会是 Byte 型

2016-08-31 17:39

url 组成: controllerKey + methodName,这个 controllerKey 是指 me.add(controllerKey, ....) 配置的第一个参数

2016-08-31 17:38

给一个记忆方法:
1:controllerKey 找到 Controller 类
2:controllerKey 后面的 methodName 找到 Controller 类中的 methodName()
3:当访问的 url 中省去 methodName 时,找到 Controller 类中的 index() 方法

2016-08-31 17:36

你的路由配置是 me.add("hello/login", HelloController.class),那么 controllerKey 是 "hello/login",然后你访问的时候是 controllerKey + method,所以应该是 "hello/login/login" 才可以访问到 login 方法,如果不带 method 那么默认是访问 index 方法,也就是说 "hello/login" 是访问 index 方法

2016-08-31 17:29

@tg 路由配置居然是: me.add("hello/login", HelloController.class),哪不用 javap 了,路由配置改为:me.add("hello", HelloController.class) 即可,认真看手册啊

2016-08-31 17:27

注意,在使用 javap 的时候,区分一下非 WEB-INF/classes 之下的 HelloController 以及在别处的那个 HelloController

2016-08-31 17:26

造成这个问题的原因,多数是 eclipse 的 Default output fold 没有改为项目的 WEB-INF/classes,从而 class 是被编译到了别的地方

2016-08-31 17:26

如果这样的话,问题可以确定了,项目现在加载的类文件不是最新的,可以在命令行用 javap HelloController 看到里面是没有 login() 方法的

2016-08-31 17:21

以及看一下是否有拦截器干扰

2016-08-31 17:21

贴出控制台输出的 jfinal action report,看里面访问的到底是什么

2016-08-31 17:10

@java180 多多支持 jfinal 社区,与社区一起成长