mybatis的单引号

本文详细介绍了在MyBatis中如何处理单引号,包括单引号的转义方法,为什么不能用双引号替代单引号,以及${}与#{}的区别。内容涉及PostgreSQL数据库的SQL编写,特别是在使用PostGIS函数计算两点距离时遇到的单引号问题。同时,讨论了在同一个SQL语句中混合使用${}和#{}的情况及其限制。
摘要由CSDN通过智能技术生成

要生成的sql:
作用是利用postgreGIS数据库函数计算两点(经纬度已知)的距离。

SELECT ST_Distance(
ST_Transform(ST_GeomFromText('POINT(-87.734087560562 43.770129071141)',4326),26986),
ST_Transform(ST_GeomFromText('POINT(-87.747382933006 43.759234252055)', 4326),26986)
);

最后成功的写法:

    <select id="selectDistance" resultType="java.lang.String" parameterType="java.util.Map">
    SELECT ST_Distance(
            <if test="lot_lat != null" >
                ST_Transform(ST_GeomFromText(<![CDATA['POINT(${lot_lat})']]> ,4326),26986),
            </if>
            <if test="parkingPointStr != null">
                ST_Transform(ST_GeomFromText(<![CDATA['${parkingPointStr}']]>, 4326),26986))
            </if>
    </select>

${lot_lat}是字符串:-87.734087560562 43.770129071141
${parkingPointStr}是字符串POINT(-87.747382933006 43.759234252055)

注意1:单引号的转义

方式a:如上使用<![CDATA[……]]>
方式b:使用xml的转义字符:

    <select id="selectDistance" resultType="java.lang.String" parameterType="java.util.Map">
    SELECT ST_Distance(
            <if test="lot_lat != null" >
                ST_Transform(ST_GeomFromText(&apos; POINT(${lot_lat}) &apos;,4326),26986),
            </if>
            <if test="parkingPointStr != null">
                ST_Transform(ST_GeomFromText(&apos;${parkingPointStr} &apos;, 4326),26986))
            </if>
  </select>

方式c:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值