select id="selectjw" resultType="java.lang.Integer" >
SELECT
<if test="lat!=null and lng!=null">
ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( ${lat} * PI() / 180 - S.`lat` * PI() / 180 ) / 2 ), 2 ) +
COS(${lat} * PI() / 180) * COS(S.`lat` * PI() / 180) *
POW( SIN( ( ${lng} * PI() / 180 - S.`lng` * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS distance
</if>
FROM t_hk_sign S WHERE id=#{signid}
SELECT
<if test="lat!=null and lng!=null">
ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( ${lat} * PI() / 180 - S.`lat` * PI() / 180 ) / 2 ), 2 ) +
COS(${lat} * PI() / 180) * COS(S.`lat` * PI() / 180) *
POW( SIN( ( ${lng} * PI() / 180 - S.`lng` * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS distance
</if>
FROM t_hk_sign S WHERE id=#{signid}
</select>
核心代码:
ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( ${lat} * PI() / 180 - S.`lat` * PI() / 180 ) / 2 ), 2 ) +
COS(${lat} * PI() / 180) * COS(S.`lat` * PI() / 180) *
POW( SIN( ( ${lng} * PI() / 180 - S.`lng` * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS distance