2017-04-25 10:40

建议看一下 jfinal 3.0 手册,里面针对升级到 3.0 有专门的一章

2017-04-25 10:40

补充一下, jfinal 3.0 默认使用的是 jfinal template engine,所以如果你需要在 jf 3.0 中使用 freemarker , 需要配置一下:
me.setViewType(ViewType.FREE_MARKER);

2017-04-25 10:39

freemarker 的路径不建议这么配置,直接在 configRoute(Routes me) 中对 Routes 进行配置就可以了:
me.setBaseViewPath("/WEB-INF/template")

你上面的代码应该也是可以的,但不如我建议的办法好

2017-04-25 10:36

@whoismy8023 追求极简的设计,一开始会有觉得少了点的感觉,但少即是多,灵活去组合各种核心功能就能实现非常灵活自由的功能

2017-04-25 00:05

@whoismy8023 hibernate 的 HQL 就是在 HQL 中使用实体属性,而非使用的字段名,付出的代价是极大的,例如需要发明 HQL,不仅徒增学习成本,而且带来了非常大的麻烦

增删改查,通常增删改是不需要写数据表字段的,你试一下 model.save(),model.update()、model.delete() 就知道这三个方法完全不需要知道字段名

只有查询才与表字段有关,hibernate 的坑在此就不在赘述了。你感觉缺少了数据库字段和实体对象属性的对应关系,这个关系并不缺少, jfinal 通过反射数据库表在系统启动时就自动建立了,如果你是希望用注解或者 XML 去配置这种对应关系,那就严重违备了 jfinal 的极简设计风格

hibernate 时代就是利用 xml 或 annotation 建立了实体属性与表字段的关系,其缺点在此就不在赘述了

2017-04-24 21:50

这个 batchUpdate 方法为了达到最高性能,所以整个方法中只使用一条 sql ,并将其 preparedStatement(sql)

如果为 list 中的每个元素都生成一条 sql 就只能 createStatement(),然后不断 addBatch(sql) 各种不同的 sql

以上是两种不同的工作模式,前者在注释中已经说明,sql 会根据 list 中的第一个元素去生成,如果 list 中的元素各不相同,建议使用 batch(List sql ...) 这类方法

2017-04-24 20:29

@why jfinal template engine 已经提供了 #escape(...) 这个指令来处理,可以用一用

此外,在 model 中使用 filter 可以利用 jsoup 很精准地指定要过滤的标签类型,属性,例如过滤 script 标签,对于原始数据并不存在多少污染,因为类似于 script 这样的标签是一定要过滤掉的

2017-04-24 17:54

需要写个方法,分分钟打完收工

2017-04-24 17:50

数据库字段变更,运行一下生成器自动搞定,然后对其 model 的 getter、setter 有依赖的地方 eclipse idea 会显示出要修改的地方,重构很便捷

jfinal 选择以数据库为基础,往上去搭建,数据结构是基础,相对稳定。如果从 model 出发,反向生成 sql 去修改数据库会很麻烦,例如你的改表结构的 sql 控制字段的长度、类型这都要额外写代码,因为仅有 model 中的属性,你生成 sql 的时候是无法知道字段长度的

因此,你还要为 model 属性添加注解,用来指示建表、改表结构 sql 的生成,而 jfinal 的以数据库为出发来得到 model 会便捷省事很多,也更稳固,不容易出问题,我个人不是太信任用 sql 去改表结构这种搞法的

你自己可以试试实现一个从 model 出发,去改表结构、生成表的功能,一定会比 jfinal 现在的设计要麻烦得多

2017-04-24 17:43

tomcat 下的部署方式参考一下这里: https://my.oschina.net/jfinal/blog/353062

2017-04-23 11:57

这个插件太贴心了,这样开发的效率大提升不少,感觉你的分享

如果 jfinal 手册有更新,这里可以同步进行更新不? 如果有一键同步更新的功能就极好了,或者通过替换手册的方式更新也可以

2017-04-22 16:00

jfinal 3.1 已添加 arp.addSqlTemplate(IStringSource) 方法,正在内测中,多多关注社区动态

2017-04-21 22:07

@杜福忠 空格是防不了过滤的,楼主是用的 & gt & lt 这样的转义字符搞定的

2017-04-21 16:26

@leomj jfinal template engine 考虑过直接支持 isXxx() 方法的 model.xxx 形式的访问,为了提升性能,少去判断这个 isXxx() 方法是否存在是权衡后的结果

因为 object.field 这种访问方式极其普遍,可以支持 java bean、model、Map、public field 等形式的存取,而 isXxx() 这种用法频率并不高,并且 isXxx() 这种方法调用可以搞定这种情况

2017-04-21 15:59

@qiongaxiu 习惯于传统方式的用传统方式也挺好