mybatis中mysql,sql能查到,但是返回结果为0的问题

问题起因,多数据库支持的问题。

ORCALE下,selectFuzzyByParam方法中的sql,单独执行能找到之,方法返回值也有对应的对象。

<select id="selectFuzzyByParam" parameterType="map" resultType="com.***.***.***.***.SysProjectDO">
    <if test="queryValue != null">
      <bind name="pattern1" value="'%' + queryValue + '%'" />
    </if>
    SELECT * FROM
    (
    select ID, CODE, NVL(TABLE1.TEXT,TABLE2.NAME) as NAME , STATUS, CREATOR, CREATE_TIME,
    UPDATE_TIME,PROJECT_DESC AS "desc",PROJECT_TYPE AS "type" from TABLE2
    LEFT JOIN TABLE1 on TABLE2.ID = TABLE1.DATA_ID
    <if test="languageCode != null">
      and TABLE1.LANGUAGE_CODE = #{languageCode}
    </if>
    )
    <where>
      <if test="queryValue != null">
        and NAME like #{pattern1}
      </if>
      <if test="status != null">
        and STATUS = #{status}
      </if>
      <if test="type != null">
        and "type" = #{type}
      </if>
    </where>
  </select>

本以为将sql中的NVL函数,换成mysql的IFNULL就可以。但是,替换后,出现很怪异的问题。单独执行sql,能查到数据。但是selectFuzzyByParam返回的集合却是空的。这种原因,应该是其中的别名设置有问题,主要是type的问题,改成如下格式后,问题解决。原因,应该是别名的处理方式不同导致的问题。oracle采用的是""的方式,而mysql采用的是``的方式。

<select id="selectFuzzyByParam" parameterType="map" resultType="com.***.***.***.***.SysProjectDO">
    <if test="queryValue != null">
      <bind name="pattern1" value="'%' + queryValue + '%'" />
    </if>
    SELECT * FROM
    (
    SELECT ID as id, CODE AS code, IFNULL(TABLE1.TEXT, TABLE2.NAME) AS name,
    STATUS as status, CREATOR as creator, CREATE_TIME as createTime, UPDATE_TIME as updateTime,
    PROJECT_DESC AS `desc`, PROJECT_TYPE AS `type` from TABLE2
    LEFT JOIN TABLE1 on TABLE2.ID = TABLE1.DATA_ID
    <if test="languageCode != null">
      and TABLE1.LANGUAGE_CODE = #{languageCode}
    </if>
    ) as tmpTable
    <where>
      <if test="queryValue != null">
        and NAME like #{pattern1}
      </if>
      <if test="status != null">
        and STATUS = #{status}
      </if>
      <if test="type != null">
        and `type` = #{type}
      </if>
    </where>
  </select>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值