主题:传入ORDER BY参数,SQL执行无效

Leeaee 2018年03月05日 251

SQL 文件:

search

===

select #use("columns")# from bb_admin

@if(isNotEmpty(page.order))

{ORDER BY

@for(order in page.sort) {

#order.property# #order.direction#

@}

@}

LIMIT #page.size# OFFSET #page.offset#

这两个参数 #order.property# #order.direction# 由外部传入

启动DEBUG,生成的log是

┏━━━━━ Debug [admin.search] ━━━

┣ SQL:     select `id`, `login_name`, `password`, `salt`, `name`, `state`, `email`, `mobile`, `phone`, `version`, `create_time`, `last_update` from bb_admin ORDER BY ? ? LIMIT ? OFFSET ?

┣ 参数:     [email, DESC, 2, 0]

┣ 位置:     cc.bable.nexus.api.AdminEndpoint.search(AdminEndpoint.java:71)

┣ 时间:     38ms

┣ 结果:     [2]

┗━━━━━ Debug [admin.search] ━━━

实际看到结果并没有ORDER BY排序的效果。

能帮忙看看是什么原因吗?

闲大赋 2018年03月06日

应该不能用JDCB占位符号输出吧,改成这样呢?


#text(order.property)# #text(order.direction)# 

beeetlsql默认输出都是“?”,有些情况需要文本输出,可以用text函数输出文本,这样效果应该类似

xxxx desc
  • Leeaee :谢谢呀,我才看到,大赋还是厉害,一眼就看到问题咯~(2018年03月06日)
Leeaee 2018年03月06日

我大概知道什么原因了,beetlsql传入的时候会把string类型的数据用string传入。

ORDER BY ? ?  传入参数就变成 ORDER BY 'email' 'DESC' 加入引号以后,SQL排序就无效了。

Leeaee 2018年03月06日

使用 text() 文本输出,就可以了,perfect,谢谢~