Mybatis的association使用子查询结果错误的问题解决

 更新时间:2025年07月07日 10:14:52   作者:陌殇殇  
本文主要介绍了Mybatis的association使用子查询结果错误的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.li.application.mapper.LgsProfitForecastMapper">


    <resultMap type="LgsProfitForecast" id="LgsProfitForecastResult">
        <association property="predictionCompletionDateStr" select="selectPredictionCompletionDateStr" 
                     column="type" javaType="string"/>
    </resultMap>

    <select id="selectProfitForecastList"  resultMap="LgsProfitForecastResult">
        SELECT
            *
        FROM
            lgs_profit_forecast
    </select>


    <select id="selectPredictionCompletionDateStr" resultType="string">
        select
            GROUP_CONCAT(prediction_completion_date)
        from
            ( select prediction_completion_date from lgs_profit_forecast  where type = #{type}  limit 4)	a
    </select>
</mapper>

需要子查询日期进行拼接

测试结果如图

问题1:association传入的column列自动映射为null

这个目前不清楚原因

解决办法

可以通过手动配置映射解决

   <resultMap type="LgsProfitForecast" id="LgsProfitForecastResult">
        <result property="type" column="type"/>
        <association property="predictionCompletionDateStr" select="selectPredictionCompletionDateStr" 
                     column="type" javaType="string"/>
    </resultMap>

测试:

可见赋值正常,但是子查询结果还是有问题

问题2:association子查询结果全部相同

查看控制台日志发现

实体类是int类型,但是传入参数自动变成boolean类型

数据库测试

存的是数字,但可以用boolean类型进行查询

查看数据表字段

结论

mybatis的association在传入字段时会自动进行数据库的类型映射,而tinyint标准的类型映射为boolean类型。所以1,2,3参数映射全部为true,导致结果一致,且tinyint列在查询时可以直接传入boolean类型查询,会自动映射为0和1

解决

1.修改为int或者varchar类型
2.tinyint的长度给大于1的数
3.数据库jdbc连接添加参数tinyInt1isBit=false

测试

到此这篇关于Mybatis的association使用子查询结果错误的问题解决的文章就介绍到这了,更多相关Mybatis的association 子查询 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • SpringBoot2.0解决Long型数据转换成json格式时丢失精度问题

    SpringBoot2.0解决Long型数据转换成json格式时丢失精度问题

    这篇文章主要介绍了SpringBoot2.0解决Long型数据转换成json格式时丢失精度问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java 根据网址查询DNS/IP地址的方法

    Java 根据网址查询DNS/IP地址的方法

    这篇文章主要介绍了Java 根据网址查询DNS/IP地址的方法,具体实现代码,大家参考下本文
    2017-12-12
  • Java中接口Set的特点及方法说明

    Java中接口Set的特点及方法说明

    这篇文章主要介绍了Java中接口Set的特点及方法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • 详解Spring中Bean的作用域与生命周期

    详解Spring中Bean的作用域与生命周期

    Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的作用域与生命周期是非常必要的。这篇文章将问你详解一下Bean的作用域与生命周期,需要的可以参考一下
    2021-12-12
  • Java特性之注解和异常 Throwable

    Java特性之注解和异常 Throwable

    这篇文章主要介绍了Java特性之注解和异常,注解是JDK1.5版本开始引入的一个特性,Throwable是Java语言中所有错误与异常的超类,文章围绕主题展开更多的相关介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • 带有@Transactional和@Async的循环依赖问题的解决

    带有@Transactional和@Async的循环依赖问题的解决

    这篇文章主要介绍了带有@Transactional和@Async的循环依赖问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Java实现图片验证码具体代码

    Java实现图片验证码具体代码

    这篇文章主要为大家详细介绍了Java实现图片验证码具体代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Java中的Callable实现多线程详解

    Java中的Callable实现多线程详解

    这篇文章主要介绍了Java中的Callable实现多线程详解,接口Callable中有一个call方法,其返回值类型为V,这是一个泛型,值得关注的是这个call方法有返回值,这意味着线程执行完毕后可以将处理结果返回,需要的朋友可以参考下
    2023-08-08
  • SpringBoot开启Swagger并配置基本信息方式

    SpringBoot开启Swagger并配置基本信息方式

    这篇文章主要介绍了SpringBoot开启Swagger并配置基本信息方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java中什么是类加载及类加载的过程

    Java中什么是类加载及类加载的过程

    Java类加载是JVM将类文件加载至内存,分加载、连接(验证/准备/解析)和初始化三阶段,本文给大家介绍Java中什么是类加载及类加载的过程,感兴趣的朋友一起看看吧
    2025-06-06

最新评论