2022-05-29 11:21
独立版本的 activerecord 不依赖 log 模块,要去掉所有 Log.xxx 有关的代码这是出发点
去掉以后,为了不丢失异常,多数地方应该要抛出异常给上层,上层再做日志就能保全异常信息,通常上层用一个全局拦截器即可收集所有这类异常
为啥没有继续向上层抛出,是因为 finally 上方还有一个 catch (Exception e) ,那么当 catch 与 finally 同时出现异常,catch 中的异常将丢失,但 catch 中的异常远比 finally 中的重要
因为 catch 中多数是与 sql、参数甚至业务有关的异常,而 finally 中可能就是一个数据库连接断开的异常
最后 finally 的 conn.setAutocommit(..) 出现异常的概率极低,综上考虑 ......
2022-05-18 13:12
@飞水 上面的用法是对,注意 index 的值要是 int/Integer 类型,高版本 enjoy 支持 long/Long 类型
2022-05-17 23:14
@21th 5.0.0 版本新添加的可选链操作也挺香的,记得用上:
article?.account?.getNickName()?.length()
2022-05-17 19:30
@杜福忠 同学是正解 @daisy1024
自己管理各种 Plugin 即可,jfinal 中的 plugin 可以独立创建、启动、关闭
2022-05-10 18:28
@lshz EQ("eq") NE("ne") 这些不是 jfinal 中的功能,是你的项目自己针对数据库封装了一些功能,看上去是用于辅助生成 sql 的,调试一下程序,很容易理解
这种用法很常见,最近我也在用类似的东东
2022-05-06 22:45
@happyboy 为啥不先配置一下,然后就不必转来转去了:
SerializeConfig.getGlobalInstance().put(Record.class, new FastJsonRecordSerializer());
2022-05-06 12:13
估计你是用了 fastjson 转换,fastjson 只认 getter 方法,所以会调用 record 里头的 getColumns() 方法来转换
解决办法是加配置:
SerializeConfig.getGlobalInstance().put(Record.class, new FastJsonRecordSerializer());
此外,还要创建一个类来支持:
/**
* FastJsonRecordSerializer 支持序列化 activerecord 的 Record 类型
*/
public class FastJsonRecordSerializer implements ObjectSerializer {
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
if (object != null) {
Record record = (Record)object;
serializer.write(record.getColumns());
}
}
}
2022-05-05 23:24
@finzmb61495 一是没有时间,二是鼓励大家都用 maven 管理依赖
这周末如果有时间我会针对 5.0.0 最后发布一次 .zip 文件,以后就不再会有了