2020-05-11 15:54
@仰望蓝天 分页出现问题一般原因与解决办法在这里:
https://jfinal.com/doc/5-6
2020-05-11 15:53
@仰望蓝天 找到原因以后,通过继承 SqlServerDialect 覆盖掉父类的 forPaginate 方法,改成自己需要的就可以
还有一种办法是写一个工具类,例如叫 MyDb.java
然后用 jfinal Db 这个工具类中已有的一些 Db.queryLong、Db.find 等功能组合出一个满足自己需求的 paginate 方法
2020-05-10 17:27
@仰望蓝天 单步调试进入 paginateByFullSql 内部,看看里面是哪个地方不对
要注意 mysql 数据库高版本对于 distinct 的语法有变动,如果不是用的 mysql ,注意要设置方言:
activeRecordPlugin.setDialect(...);
配置一下输出 sql ,再用 sql 去 navicat 中看看对不对:
activeRecordPlugin.setShowSql(true);
最后,jfinal 只是将你的 sql + para 直接扔给 JDBC,自身并不会干预 sql 的执行,只要你的 sql 能在 JDBC 下正常工作,就一定没问题
2020-05-09 11:07
@wangjiaxian 建议看看 json 的文档与源码,很少的内容,一会就看完了:
https://jfinal.com/doc/12-1
最后,还可以继承扩展 JFinalJson, 在里头加一个对字段名转驼峰的代码也可以解决,方法也是现成的:
StrKit.toCamelCase(...)
2020-05-09 11:06
@wangjiaxian 配置成 FastJson 转换 json 时,对 Model 对象的转换一定要注意
fastjson 转 json 时依赖 getter 方法,所以你在使用 sql 关联查询时获取到的一些别的 table 的字段就不会被转换。使用 Model.put(...) 进去的数据也不会被转换,反正记住没有 getter 方法的就不会被转换
JFinalJson 对 Model 对象的转换不依赖 getter 方法,而是对 Model 内部的 Map attrs 这个对象进行转换,所以往这里头装入的数据都会被转换
在使用过程中,可以灵活选择,例如:
如果你使用的是 Oracle 数据库,最急需的是解决驼峰字段名问题,可以配置为 FastJson
然后在需要使用 JFinalJson 转换的地方临时使用,例如在 Controller 中这么临时来用:
String jsonString = JFinalJson.getJson().toJson(model);
renderJson(jsonString);
总结就是:me.setJsonFactory(...) 配置默认 json 实现类,在需要临时使用别的 json 实现的时候通过 JFinalJson.getJson() 或者 Xxx.getJson() 来使用
2020-05-09 10:55
@zzutligang jfinal 生于 2011 年,精致迭代 9 年
极简实现 MVC + ORM + AOP + Template Engine , 仅有 2 两万多行代码,与其说 "博大精深" 不如说 "少即是多"
2020-05-09 10:51
@祥子 jfinal 起步为 JDK 8 以后,添加的这个 filter 方法,支持 lambda 方式灵活控制需要被过滤的 table, 而无需继承 MetaBuilder 的方式扩展
强烈建议旧表、新表一起生成,否则当你旧表有改变时怎么办?