jfinal 分页排序bug

发布于 2021-12-02 00:39:39 字数 870 浏览 922 评论 6

@JFinal 你好,想跟你请教个问题:

SELECT * FROM T ORDER BY length(id)

分页时出错,源代码

public static String replaceFormatSqlOrderBy(String sql) {
sql = sql.replaceAll("(\s)+", " ");
int index = sql.toLowerCase().lastIndexOf("order by");
if (index > sql.toLowerCase().lastIndexOf(")")) {
String sql1 = sql.substring(0, index);
String sql2 = sql.substring(index);
sql2 = sql2.replaceAll("[oO][rR][dD][eE][rR] [bB][yY] [u4e00-u9fa5a-zA-Z0-9_.]+((\s)+(([dD][eE][sS][cC])|([aA][sS][cC])))?(( )*,( )*[u4e00-u9fa5a-zA-Z0-9_.]+(( )+(([dD][eE][sS][cC])|([aA][sS][cC])))?)*", "");
return sql1 + sql2;
}
return sql;
}
查询总记录数的sql将为:select count(*) from t order by length(id) 

不知道2.2是否已修复此bug

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

夜司空 2021-12-06 13:02:59

用这种不严谨的做法(可能不需要完美的比如分析sql,构建语法树那些),建议注释和文档里写得足够清楚可能的缺陷

南汐寒笙箫 2021-12-06 12:59:49

回复
@乌龟壳 : 去除了处理 order by 的正则以后,就很严谨了

一笔一画续写前缘 2021-12-06 12:52:25

回复
@JFinal : bingo

三月梨花 2021-12-06 12:49:35

用一下 jfinal 3.0,该版本没有用正则处理过 order by,所以是正确的

泛泛之交 2021-12-06 10:48:01

2.2没问题 但是3.0却又出来了。@jfinal

尐偏执 2021-12-03 09:47:49

m

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文