2024-10-30 17:41

第一套数据库连接池添加在前,会成为默认数据源
ActiveRecordPlugin arp1 = new ActiveRecordPlugin("db1", dp1);
me.add(arp1);

用的时候不需要指定,直接用:
Db.find(...)

2024-10-30 15:28

看一下私信,有微信群,有资源可以下载,社区的新作品正在大步推进,开发更快、更丝滑

2024-10-26 14:58

问一下 chat gpt ,回复可以参考一下,虽然结果出现了了幻觉,但思路值得借签,它提出继承 dialect, 其实应该是要继承 ModelBuilder、RecordBuilder,然后处理一下获取数的地方:

是的,您可以在 JFinal 中通过自定义 Dialect(方言)来解决从 SQLite 数据库读取 Blob 类型数据的问题,而无需修改 JFinal 的源代码。

问题原因:

SQLite JDBC 驱动程序未实现 getBlob 方法,因此当 JFinal 使用默认的 getBlob 方法读取 Blob 数据时,会抛出 “not implemented by SQLite JDBC driver” 的异常。

解决方案:

创建自定义 Dialect:

您可以创建一个自定义的 Dialect 类,继承自 JFinal 提供的 SQLiteDialect 或直接继承 com.jfinal.plugin.activerecord.dialect.Dialect。

java
复制代码
public class CustomSQLiteDialect extends SQLite3Dialect {
@Override
public Object getValue(ResultSet rs, String colName, Class type) throws SQLException {
if (type == byte[].class) {
// 使用 getBytes 方法读取 Blob 数据
return rs.getBytes(colName);
}
return super.getValue(rs, colName, type);
}
}
注册自定义 Dialect:

在您的 JFinal 配置中,注册您自定义的 Dialect:

java
复制代码
ActiveRecordPlugin arp = new ActiveRecordPlugin(...);
arp.setDialect(new CustomSQLiteDialect());
me.add(arp);
使用自定义类型映射(可选):

如果需要,您还可以自定义类型转换器,以确保 Blob 类型的数据被正确地映射为 byte[]:

java
复制代码
public class CustomTypeConverter extends TypeConverter {
@Override
public Object convert(Class type, Object value) {
if (value instanceof byte[]) {
return value;
}
return super.convert(type, value);
}
}
然后在配置中设置自定义的类型转换器:

java
复制代码
arp.setTypeConverter(new CustomTypeConverter());
总结:

通过自定义 Dialect,您可以控制 JFinal 在从 ResultSet 中读取数据时的行为,使用 getBytes 或 getBinaryStream 方法来读取 Blob 数据类型。这种方式无需修改 JFinal 的源代码,且解决了 SQLite JDBC 驱动未实现 getBlob 方法的问题。

2024-10-24 11:42

ThreadPoolKit.shutdown() 是你整个项目停止服务的时候调用一次,不调用也没关系

在提交任务后,不能调用该方法

2024-10-22 09:42

从哪一个版本升到了哪一个版本?

可以先看看升级文档,看里面是不是正好有需要改的地方,绝大多数升级都不需要改或者改动极小:
https://jfinal.com/doc/14-1

2024-10-17 23:06

where 1=1 大量被使用,这个分享很有价值,点赞加收藏,以后用得上

2024-10-15 16:32

@idreamblue jfinal 一直在维护,看一下 maven 中心库的版本升级

由于 jfinal 已诞生 13 年,早已非常成熟稳定,再加上极简设计核心只有一万行代码左右,所以维护很轻松,每个月花两个小时即可

jfinal 社区正在开发 AI 时代的颠覆性开源项目,多多关注社区

2024-10-09 16:33

NPE 异常中明确到了行号,将 null 值保障为非 null 即可

2024-10-09 10:44

正好要用上,这回省事了,感谢感谢, 点赞 + 收藏

2024-10-08 17:51

@杜福忠 微信扫码登录是大势所趋, 我以后的站都要支持这个

2024-10-08 15:39

@杜福忠 对了,有没有微信扫码登录的现成代码,这个也用得挺多的,过段时间我也用得上

2024-10-08 15:38

@杜福忠 正好能用上,这点最重要

2024-10-08 10:33

比邮件、短信实用,面向互联网用户的站点可以用起来,点赞收藏

下面这招可以引入 jfinal , 性能比手写的快:
SecureRandom RANDOM = new SecureRandom();
RANDOM.nextBytes(secretKey)

2024-10-04 11:30

@happyboy jfinal 新版本尽可能保持兼容性

按文档升级分分钟的事:https://jfinal.com/doc/14-1

2024-09-29 11:36

不支持秒级,可直接用 quartz 这类开源项目:
https://www.oschina.net/p/quartz

当然,如果不是一定要精确到秒级,只支持分钟级就够用,性能还高

最后,或许 jfinal 自带的 ScheduledKit 就能解决,可以看看这个工具类的源码,里面有详情的使用说明