测试 sql 文件压缩的时候,不彻底,如果能把换行都干掉就完美了

#for(f:fields)
   #(for.first ? null : ",")
   #(f.code)
#end

类似这种代码解析出来的sql是

action_class

, office_code

这样的,每个 #() 这种方法,后面都会跟一个换行,压缩不掉

评论区

JFinal

2020-07-20 22:59

sql 管理功能用了 enjoy 模板引擎来生成 sql,是保留了空白字符的

如果要压缩,需要配置一下:
Engine engine = arp.getEngine();
engine.setCompressOn(' ');

spKevin

2020-07-21 09:00

@JFinal 这个压缩配置我是用了的,不过 #() 这种方法后边的换行还是去不了,如果我在 #() 这个方法后边加一个空格,就不再有换行,压缩的方法里面我打印了下,好像获取不到方法的文本

chcode

2020-07-21 09:40

sql压缩意义大吗?@JFinal

JFinal

2020-07-21 13:24

@chcode engine 新增的压缩功能当然不是针对 sql 的,对于 sql 来说,压不压缩并没有什么不同,可能有些同学觉得压缩后好看一些

chcode

2020-07-21 14:01

@JFinal 又学到一招,建议文档加上engine.getEngineConfig().setKeepLineBlank("output", false); 这个配置,sql语句不换行在某些场景还是有些用处的

JFinal

2020-07-21 14:07

@chcode 虽然 jfinal 才三万行代码,但功能实在太多了,所以不是核心的功能都不会在文档中说明,有些事情你必须舍弃,突出重点

spKevin

2020-07-21 17:19

@JFinal 其实,就是为了好看,没有别的用,最后我通过预留的设置压缩类的方法,将原方法拷贝了一份,加了个条件。。
if (len == 1 /* && content.charAt(0) == '\n' */) {
if (content.charAt(0) == '\n' || content.charAt(0) == '\t') {
if (result == null) {
result = new StringBuilder(len); // 延迟创建
}
result.append(this.separator);
return result;
} else {
return content;
}
}

JFinal

2020-07-25 14:36

@spKevin jfinal 4.9.01 这个版本已经改进了算法,对于 sql 压缩支持更好,配置方法:
activeRecordPlugin.getEngine().setCompressorOn(' ');

热门反馈

扫码入社