当前使用版本(必填,否则不予处理)
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")