Mybatis使用distinct问题及处理

 更新时间:2025年12月08日 08:52:13   作者:木灵木灵  
Mybatis使用distinct查询时,插件自动生成的sql可能少去掉一行,导致查询不到期望的结果,修复方法是在生成的sql中去掉"Base_Column_List"

Mybatis使用distinct问题

使用插件自动生成sql

具体如下:

 <resultMap id="versioncodeResult" type="java.lang.String" >
    <result column="code" property="code" jdbcType="VARCHAR" />
  </resultMap>
  
<select id="selectVersionCodeByParam" parameterType="com.entity.OdpsrequesttoidbtableParam" resultMap="versioncodeResult">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
    -->
    select
    <if test="distinct">
      distinct
    </if>
    versioncode as code
    <include refid="Base_Column_List" />
    from odpsrequesttoidbtable
    <if test="_parameter != null">
      <include refid="Param_Where_Clause" />
    </if>
    <if test="orderByClause != null">
      order by ${orderByClause}
    </if>
    <if test="page">
      limit #{pageIndex},#{pageSize}
    </if>
  </select>

始终查询不到我想要的结果

序号code
1266
2267

查看具体生成的sql发现

少去掉了一行

###
 SQL: select             distinct           versioncode as code    
 id, gmt_create, gmt_modified, apiname, pkey, versioncode, appkey      
 from odpsrequesttoidbtable                         WHERE (  appkey = ? )

修复后的sql如下

去掉"Base_Column_List" :

<select id="selectVersionCodeByParam" parameterType="com.entity.OdpsrequesttoidbtableParam" resultMap="versioncodeResult">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
    -->
    select
    <if test="distinct">
      distinct
    </if>
    versioncode as code
    from odpsrequesttoidbtable
    <if test="_parameter != null">
      <include refid="Param_Where_Clause" />
    </if>
    <if test="orderByClause != null">
      order by ${orderByClause}
    </if>
    <if test="page">
      limit #{pageIndex},#{pageSize}
    </if>
  </select>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解SpringBoot时间参数处理完整解决方案

    详解SpringBoot时间参数处理完整解决方案

    这篇文章主要介绍了详解SpringBoot时间参数处理完整解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 详解SpringBoot简化配置分析总结

    详解SpringBoot简化配置分析总结

    这篇文章主要介绍了详解SpringBoot简化配置分析总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Java日常练习题,每天进步一点点(14)

    Java日常练习题,每天进步一点点(14)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • Spring如何基于注解配置使用ehcache

    Spring如何基于注解配置使用ehcache

    这篇文章主要介绍了Spring如何基于注解配置使用ehcache,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码

    SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码

    Mybatis-Plus是一个优秀的Mybatis增强工具,目前更新到3.1.1,本文通过示例代码给大家介绍SpringBoot集成Mybatis-plus并实现自动生成相关文件的问题,感兴趣的朋友跟随小编一起看看吧
    2021-12-12
  • Java Random.nextInt()方法原理解析

    Java Random.nextInt()方法原理解析

    这篇文章主要介绍了Java Random.nextInt()方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java经典设计模式之装饰器模式解析

    Java经典设计模式之装饰器模式解析

    这篇文章主要介绍了Java经典设计模式之装饰器模式解析,装饰器模式主要解决继承关系过于复杂的问题,通过组合来替代继承,指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,需要的朋友可以参考下
    2023-08-08
  • Java在并发环境中SimpleDateFormat多种解决方案

    Java在并发环境中SimpleDateFormat多种解决方案

    这篇文章主要介绍了Java在并发环境中SimpleDateFormat多种解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • MyBatis Plus插件机制与执行流程原理分析详解

    MyBatis Plus插件机制与执行流程原理分析详解

    这篇文章主要介绍了MyBatis Plus插件机制与执行流程原理分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • JWT在SpringBoot3中的作用及说明

    JWT在SpringBoot3中的作用及说明

    JWT是一种开放标准(RFC 7519),用于在网络应用环境间安全地将信息作为JSON对象传输,JWT在SpringBoot中用于身份验证、授权和无状态性,相比传统的session/cookie方式,JWT具有无状态、易于扩展、跨域支持好、性能高等优点,但也存在令牌体积较大
    2025-12-12

最新评论