NutzCN Logo
问答 Cnd.desc如何传入函数表达式
发布于 67天前 作者 htgylzhq 101 次浏览 复制 上一个帖子 下一个帖子
标签:

应用场景是有一张表,里面存储了经度(longitude)和纬度(latitude),需要查出离特定位置(经纬度)最近的某几处地点,所以从网上找了一个函数https://github.com/mattg888/MySQL-Distance-Calculation-Functions,能计算两个经纬度之前的距离,最终写成的条件是这个cnd.desc("GeoDistDiff('km', '80', '40', latitude, longitude)")。
查了一下,Cnd.and()可以接收SqlExpression,用static可以写静态条件,这个desc好像暂时不支持,不知道有没有什么变通的办法?

4 回复

给出你想要的sql

大概是这个样子,GeoDistDiff是一个自定义函数:

select id, name from t_job where name like '%123%' order by GeoDistDiff('km', '80', '40', latitude, longitude);

哦, 没办法... 还是static吧...

另外,报个issue呗

我突然想起来,我以前为了中文排序做了一个OrderBy注解,这个东西可以直接作为Cnd.orderBy()的第一个参数,所以Cnd.orderBy似乎是默认支持传入任意字符串(非字段名)的。时间久了,我自己都忘了。

  @OrderBy("convert(creator_name using gbk)")
  private String creatorName;
添加回复
请先登陆
回到顶部