2023-09-07 19:44

package.xml 中大致这么配置:

<!-- src/main/resources 全部 copy 到 config 目录下 -->
<fileSet>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>**/*.sql</exclude>
</excludes>
<outputDirectory>config</outputDirectory>
</fileSet>

2023-09-07 19:40

参考 jfinal-admin 或者 jfinal-club,大致是配置一下 pom.xml 中的 resoures

<!--
添加 includes 配置后,excludes 默认为所有文件 **/*.*,反之亦然
该规则在 maven-jar-plugin 等插件中同样适用
-->
<resources>
<!-- 添加该配置是为了将 .sql 文件打入 jar 包 -->
<resource>
<!-- 注意 IDEA 下必须要使用 ${project.basedir}/ 前缀,否则不生效 -->
<directory>${project.basedir}/src/main/java</directory>
<includes>
<!-- **/* 前缀用法,可以匹配所有路径 -->
<include>**/*.sql</include>
<include>**/*.jf</include>
</includes>
</resource>

<!--
没有添加 resources 配置时,src/main/resources 目录是默认配置
一旦添加 resources 配置指向 src/main/java 目录时,原先的默认配置被取代,
所以需要添加如下配置将默认配置再添加进来,否则无法使用 src/main/resources
下的资源文件
-->
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>

然后在 package.xml 中将 sql 排除在外,不 copy

2023-09-07 19:36

@zzutligang 参考 jfinal-admin 或者 jfinal-club

大致是配置一下 pom.xml 中的 resoures
${project.basedir}/src/main/java **/*.sql **/*.jf ${project.basedir}/src/main/resources 然后在 package.xml 中将 sql 排除在外,不 copy

2023-09-07 13:52

优先从 jar 包中加载, 打包时 sql 模板文件不要生成到 config 目录下,通过配置排除掉

2023-08-30 19:52

试用一下我提交的新版本代码,看还有没有问题,这个版本针对 BigDecimal 添加了 halfUp(int) 四舍五入功能,非常方便

2023-08-30 10:09

将 json 表示成一颗树,看一下树最深的地方是多少层

2023-08-30 10:05

@rctmlb 可能是 JDK 版本的问题,你是不是没有使用 Oracle 或者 OpenJdk 的版本? 可能有些比较偏门的 JDK 发行版本会有问题

无论如何,我这边代码已经调整过了,回发头个新版本给你:
https://gitee.com/jfinal/jfinal/commit/d95792105599e239ed5e87cf49bd19e4c449b64e

2023-08-29 19:36

primitiveToBoxedMap 这个对象是在 static 属性中 new 出来的,按理说不可能出现 null 值情况,你那是怎么出现的问题?请描述一下整个过程

2023-08-13 18:45

代码质量非常高,已 star + fork

无意中发现个问题,反馈一下:
public class OperLogInterceptor implements Interceptor {

@Override
public void intercept(Invocation ai) {
ai.invoke();
// ACTION执行后记录日志,多线程记录,提升访问性能
new Thread(() -> writeOperLog(ai)).start();
}
....
}


以上在线程中 writeOperLog 会有问题,建议将绝大部分代码不要放在新线程之中,而只是将数据库操作放在独立线程中,因为瓶颈在数据库:
log.save();

此外,每次请求 new Thread(...) 开销会很大,可以用上 jfinal 内置的线程池:
ThreadPoolKit.execute( () -》 writeOperLog(ai));

2023-06-27 20:53

@chcode 这些一直都可以,博主的需求是批量插入数据,获得所有批量数据的主键值,而不是一个

2023-06-26 21:18

试用了一下,速度非常快,就感觉跟本地部署一样,接入 chat gpt 这么快速怎么做到的?

2023-06-25 21:48

save(...) 最终是插行一条 insert 语句,一般会执行成功,否则会抛出异常,注意看一下 insert 语句的执行结果

2023-06-18 11:35

这个实现思路不仅创新,而且优雅,以前没人这么想过

经过这个改造,去除老项目代码中的重试代码,简单、清爽

Invocation 中 index++ 的改动,证明对 jfinal 核心有深刻把控,这个地方确实是为了防止 action 被调用多次的,点赞 + 收藏 一波

2023-06-04 21:01

一直想要有这么个工具,一直没时间写,这回有现成的了,感谢分享,收藏 + 点赞一波