当前使用版本(必填,否则不予处理)

3.5.1 版本

该问题是如何引起的?(确定最新版也有问题再提!!!)

当使用一个或多个字段计算出一个新字段时,这个新字段不太好查出

重现步骤(如果有就写完整)

我上网查了一下,发现可以使用 @TableField('max(column)') 来实现类似 max(column) as field 但我这个列里面是需要传参的,

想要的查询SQL

select *, ACOS(SIN((%s * 3.141592653589793) / 180 ) * SIN((latitude * 3.141592653589793) / 180 ) + COS((%s * 3.141592653589793) / 180 ) * COS((latitude * 3.141592653589793) / 180 ) * COS((%s * 3.141592653589793) / 180 - (longitude * 3.141592653589793) / 180 ) ) * 6378.137 as distance from tableName;

当然使用 .select('') 也是可以解决的,但是调了一下就失去了其他列的查询,还得用 * 来代替或者再一个一个调用.select(''),太麻烦了

报错信息

Comment From: zhushizhan

其实就是在原有的列的基础上,再多查一列(SQL计算得出,其实就是别名的问题,查询列的计算里面需要参数),如果能直接调用 .addCol('SQL',args); 或者 .select('SQL',args); 就好了,就和 .apply('SQL',args) 差不多的那种,这样就能解决了,我也能直接调了

Comment From: miemieYaho

select("*","xxx as zzz")

Comment From: zhushizhan

其实我是不想用 * 来表示查询的列

Comment From: zhushizhan

本身是可以查每一列的,但是新增了一个列,就损失了前面的列,只能用 * 代替了

Comment From: miemieYaho

你可以用 https://github.com/baomidou/mybatis-plus/blob/3.0/mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/ReplacePlaceholderInnerInterceptor.java 这个插件

Comment From: miemieYaho

点开源码看看注释就知道怎么用了,然后 select("{@tableName}","xx as ee")