2021-01-14 15:05
@joneJson 你的 baseIcon 对象,每次 new 出来就没事
我前面说的你试一试 baseIcon.remove("id").save(); 只是让你验证错误的原因,并不是主张你这么用
baseIcon 你要让线程独享,不能多线程共享,否则数据就会混乱,这是 java 多线程模型规定的,不是 jfinal 的使用规则
也就是说,这是 java 基础知识,jfinal 不干预
2021-01-12 20:03
@zzutligang 数据多不会一次性读取,而是分批次读取,批次大小取决于你 mysql 配置的缓冲区
当然,上面讲的偏向于 JDBC 与数据库这一端,如果你的代码这一端一次性读很多数据肯定是会 OOM 的
2021-01-12 15:55
@chcode 简单说就是 ReultSet 并不是一开始就知道共有多少条记录被查出来,那么 isLast() 就需要有 io 操作,强制得到所有数据才能得到 isLast(),这样的话,就算数据量再大也要一次性得到所有数据,性能会拉低
也可能是由于这类原因,不同的数据库对 JDBC 规范的实现有差异,有些干脆不去实现
便如,jfinal 在开发 active record 模块的 generate 模块的时候,获取一些 meta 信息生成 model、baseModel 时,有些数据库行为就是不一样,造成很多麻烦