2020-04-01 17:07

13 年的时候,用 jfinal 做的一个 deal analyzer,每天数据量超过 1 千万条,相当稳定

如果你用到 Db.batch 系的方法,注意 batchSize 值不要太大,否则会在超出数据库某个值的时候自动提交,这样在回滚事务的时候,那些被提交的数据就不能回滚了

我一般设置在 5000 以内

我看到你用了 on duplicate key up,那么你得注意是不是数据没有丢失,只是数据存在时没有 insert 而只是进行了 update。

此外,据说 on duplicate key up 有坑,你再多了解一下

2020-04-01 16:55

这样的话,既保障了基本配置的默认配置,又可以在外部任意覆盖这些配置

总之,注意不要让 jar 包与 config 目录下出现同名配置就好,因为同名文件只会有一个生效,并且只有 jar 内的生效

2020-04-01 16:54

如果希望留一部分配置文件在 jar 包内,一部分放在外部,然后用 appendIfExists(...) 来追加并覆盖的话

可以让 jar 包内只留其中的一个,另一个只留在打好包的 config 目录中,让 appendIfExists(...) 来读取

2020-04-01 16:52

当出现同名配置的时候,优先读 jar 内的

所以解决办法是在打包的时候过滤掉配置文件,不要打包到 jar 里面去,过滤的配置在 jfinal club 的 pom.xml 与 package.xml 中有的

2020-04-01 16:44

@心在流浪 使用 @Inject 注入的前提条件是,被注入的起点的创建或初始化是被 jfinal 接管的,下面三类组件据有这样的特征:
1:controller
2:interceptor
3:validator

所以,在上面三类组件中使用 @Inject 时,能被正确注入

此外,在上面三类组件中被 @Inject 注入的目标对象所形成的链条也能被正确注入,例如:
public class MyController extends Controller {
@Inject
Aaa aaa;
...
}

public class Aaa {
@Inject
Bbb
...
}

上面的例子中,在 MyController 中注入了 Aaa,而 Aaa 中已被注入了 Bbb,这种以 controller 为注入起点的注入链条是可以被注入的,并且可以被注入无限层

类似的在 Interceptor、Validator 中也可以像上面这样在链条中被注入

如果不满足上述条件,需要使用 Aop.get(...) 或者 Aop.inject(...) 进行处理,仍然十分便利

2020-04-01 16:24

按文档来一定可以的:https://jfinal.com/doc/1-2

2020-04-01 16:22

@Dreamlu 写的代码,值得信赖,JFinal event 设计简洁,是 jfinal 风格,值得拥有

2020-04-01 16:17

@zzutligang 认真建立业务层,在前期看似多费点时间,实质是最省时间的

不要在 controller 中写业务逻辑,更不要在 controller 中写 sql 代码

2020-04-01 16:15

直达事物本质,不留一点杂质,这是高手,点赞

2020-04-01 16:08

越来越完善,添加 XSS、CSRF 防御以后安全性进一步提升,收藏 + 点赞

2020-03-28 14:15

@小毛头的最靓丽 老旧项目注意看下特别声明
https://jfinal.com/doc/1-11

2020-03-28 09:27

@zzutligang 有业务层在总体上开发进度会更快,因为随着开发的推进,越来越多需要的功能可以从已有业务方法中组合而成,业务代码的重用会极大提升效率,并且降低错误率

2020-03-27 20:58

@小毛头的最靓丽 如果是标准的 maven 项目,先将项目目录中的所有东西都删掉,只留 src目录 与 pom.xml 文件

注意要将一些隐藏文件也删干静

然后导入的时候,一定要选择将其当成 maven 项目,进入 maven 项目的导入向导

如果你知道如何导入标准的 maven 项目,就不会有此问题了, 因为 jfinal 项目就是标准的 maven 项目

本质上还是你对标准 maven 项目如何导入不熟悉选成的

前面讲到的先删除一些文件,是为了消除你上次导入时生成的一些 IDEA 配置,或者别人在给你项目的时候已经生成的一些配置(无论是 eclispe 还是 IDEA,只要是导入过,就一定会生成一堆额外的东西)

2020-03-27 20:55

@zzutligang 用 jfinal 开发项目,无论如何要有业务层,将业务层代码弄好,以后维护起来很方便

2020-03-27 20:54

单步调试,得到 SqlPara 对象以后,检查一下它里头的 String sql 与 List para 这两个对象,然后在 workbench 测试一下这个 sql 是否能正常工作

jfinal 的 arp ,并不会去干涉及 sql 的执行,是直接扔给 jdbc 去执行的