2019-04-30 14:51

Model 用的是 active record 模式,而 active record 模式的核心是一个 model 对象唯一对应一个 table 中的一条记录,而这个对应关系是通过主键来完成的

如果你没有主键,那么 active record 模式的前提假设就不成立,所以就没有了所谓的生成 Model 这件事存在了

table 没有主键并非好习惯,在没有主键的情况下可以使用 jfinal 的 Db + Record 模式

2019-04-30 12:08

@qyq1103 maven 项目直接下载 jfinal demo for maven ,里头有 pom.xml

maven 项目不需要 jar 包,会自动化下载

2019-04-30 11:13

如果不希望对外界响应任何数据,使用:
renderNull();

2019-04-30 11:12

WxController 的 wx() 是 action, 是外部触发的,那么你希望对外界响应一个什么数据?

例如可以:
renderJson("msg", "成功");

2019-04-30 11:11

一般是动态建表:
Db.update("create table ....");

动态建 database 还真没玩过,试试这样:
Db.update("create database ....");

传 sql 进去即可

动态建库应该要先建立连接,多试验

2019-04-30 11:08

@qyq1103 总之,全用 jfinal-3.8-all.zip 中的 jar 包,其中的作用里头有一个说明文件

你自己找的 jar 包就要保证其版本合适

2019-04-30 11:07

@crazykids find 方法本身是极快的,因为 jfinal 的任何数据库操作方法都是对 JDBC 的极薄封装

慢就慢在,如果你返回的数据条数多的话,io 动作就慢了, io 动作本身就与 jfinal 无关了

我这边不仅要用聚合函数,也得查表中的一部分字段,用 find 是可以的

也可以试试 Db.query 方法,该方法返回的值不封装为 Model、Record,是原生的 java 对象,能提点速度,但这个提速基本可以忽略不计

2019-04-30 09:55

find 会获取数据,有 io 开销,带有 sum、count 的,可以缩减 select 后面的字段,例如:
select * 改成
select x

再有,如果只是为了获取聚合函数的值,可以用:
Db.queryInt("select count(*) from t where ...", p1, p2, ...p3);

不要用 find,find 用于将查询的值封装成 model

2019-04-30 09:55

find 会获取数据,有 io 开销,带有 sum、count 的,可以缩减 select 后面的字段,例如:
select * 改成
select x

再有,如果只是为了获取聚合函数的值,可以用:
Db.queryInt("select count(*) from t where ...", p1, p2, ...p3);

不要用 find

2019-04-30 09:53

@qyq1103 注意 jetty-server 也用那个 zip 中的,现在的版本到了 jetty-server-2019.3

2019-04-30 09:05

非 maven 版项目,下载首页右侧的 jfinal-3.8-all.zip, 全部使用里面提供的 jar 包

你自己找的 jar 就要确保完备可用,版本要对,最好不要自己找

2019-04-29 17:51

@zeroabc 4.0 版本上了以后,即便不改代码也可以的, remove 再 add 这个不影响 jfinal 4.0 中配置的优先级,有兴趣可以看一下 FieldKit.java 源码

2019-04-29 17:48

@zeroabc 副作用的概率极低,这个仅仅只是改变了 “取值方式” 的优先级,下面给出一种可能的影响:
1:假定你的 MyModel 中定义了一个 public 属性 public static final String test = 123
2:假定你的 MyModel 所对应的数据库表叫 my_table,里头也有一个字段叫 test
那么取值的时候是取 public 属性的值,而取不到数据库字段的值

这个可想而知,不会有谁会在 model 中定义的与字段名同名的东东,并且一定要是 public 的才会有冲突

题外话,obj.field 取字段值的时候,并不要求是 static,只要是 public 即可,例如:
public String test = 123;

2019-04-29 17:41

jfinal 4.0 版本已对此处做了改进:
https://gitee.com/jfinal/jfinal/commit/c2e56a5d4506bc28ad9a15399777d51d56808647

2019-04-29 17:21

注意,上面两行代码,在 configEngine 中添加即可