Mybatis 返回对象里包含List<String> 或List<Long>集合结果错误

文章描述了一个在使用MyBatis进行SQL查询并映射结果到Java对象时遇到的问题。查询涉及到`advice_no`,`cure_begin_time`,`cure_end_time`和`cure_week_day`字段,原始的`resultMap`配置导致了`cureWeekDay`被解析为Long类型的数组,但缺少`adviceNo`字段时引发空指针异常。通过修改`resultMap`,将`cure_week_day`配置为一个包含结果的集合,问题得到解决,现在`cureWeekDay`正确映射为[2,4,5]这样的数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL语句:

select distinct
            advice_no,
            time(cure_begin_time) as cure_begin_time,
            time(cure_end_time) as cure_end_time,
            cure_week_day
from cure_schedule where delete_flag=0

SQL查到结果是

mybatis映射文件XML的resultMap是

-------修改前------
<resultMap id="CureInfo"  type="com.aadata.yiyang.entity.request.CureScheduleCreateCureInfo">
    <result property="adviceNo" column="advice_no" />
    <result property="cureBeginTime" column="cure_begin_time" />
    <result property="cureEndTime" column="cure_end_time" />
    <collection property="cureWeekDay" ofType="Long" column="cure_week_day"/> 
</resultMap>

 但是返回Java对象是

"adviceNo": "2023040194",
eginTime": "10:00:00",
"cureEndTime": "10:20:00",
"cureWeekDay": [
    2023040194,
    2023040194,
    2023040194
]

如果去掉adviceNo字段则会报空指针错误。

解决方法:

-------修改后------
<resultMap id="CureInfo" type="com.aadata.yiyang.entity.request.CureScheduleCreateCureInfo">
    <result property="adviceNo" column="advice_no" />
    <result property="cureBeginTime" column="cure_begin_time" />
    <result property="cureEndTime" column="cure_end_time" />
    <collection property="cureWeekDay" ofType="Long">
        <result column="cure_week_day"/>
    </collection>
</resultMap>
"adviceNo": "2023040194",
"cureBeginTime": "10:00:00",
"cureEndTime": "10:20:00",
"cureWeekDay": [ 2, 4, 5]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值