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 子查询 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Springboot集成mybatis实现多数据源配置详解流程

    Springboot集成mybatis实现多数据源配置详解流程

    在日常开发中,若遇到多个数据源的需求,怎么办呢?通过springboot集成mybatis实现多数据源配置,简单尝试一下,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • maven打包时配置多环境参数的实现

    maven打包时配置多环境参数的实现

    本文主要介绍了maven打包时配置多环境参数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • SpringBoot Web工程同时启动多个HTTP端口的方法

    SpringBoot Web工程同时启动多个HTTP端口的方法

    本文介绍了在SpringbootWeb工程中如何配置多个HTTP端口,分别以Tomcat、Jetty和Undertow为例,通过修改配置文件和编写配置类实现多端口启动,并提供了详细的代码供读者参考,需要的朋友可以参考下
    2026-04-04
  • Java实现手写自旋锁的示例代码

    Java实现手写自旋锁的示例代码

    自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分。本文将用Java实现手写自旋锁,需要的可以参考一下
    2022-08-08
  • java多线程从入门到精通看这篇就够了

    java多线程从入门到精通看这篇就够了

    熟悉 Java 多线程编程的同学都知道,当我们线程创建过多时,容易引发内存溢出,因此我们就有必要使用线程池的技术了,今天通过本文给大家分享java多线程从入门到精通的相关知识,一起看看吧
    2021-06-06
  • Java Caledar类(日历类)如何判断本周周数

    Java Caledar类(日历类)如何判断本周周数

    这篇文章主要介绍了Java Caledar类(日历类)如何判断本周周数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Java动态数组添加数据的方法与应用示例

    Java动态数组添加数据的方法与应用示例

    这篇文章主要介绍了Java动态数组添加数据的方法,结合实例形式详细分析了Java动态数组的创建、添加、查找、打印等相关操作技巧,需要的朋友可以参考下
    2019-11-11
  • 基于Spring概念模型:PathMatcher 路径匹配器

    基于Spring概念模型:PathMatcher 路径匹配器

    这篇文章主要介绍了Spring概念模型:PathMatcher 路径匹配器,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java使用bcrypt实现对密码加密效果详解

    Java使用bcrypt实现对密码加密效果详解

    bcrypt是一种自带盐值(自动加盐)的加密方案。本文将通过示例为大家详细介绍这一对密码进行加密的算法,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-03-03
  • 浅析Java中的GC垃圾回收器的意义及与GC的交互

    浅析Java中的GC垃圾回收器的意义及与GC的交互

    这篇文章主要介绍了Java中的GC垃圾回收器的意义及与其的交互,GC是Java虚拟机JVM的一项重要特性,需要的朋友可以参考下
    2015-12-12

最新评论