Mybatis返回结果字段与Java PO类字段映射

在将Mybatis从3.4.2升级到3.5.6后,遇到字段映射问题,select返回的digtAccArId为空。分析发现,3.4.4版本开始改变了默认映射规则,仅对未在resultMap中的字段进行映射处理,这导致了字段映射异常。解决方案是调整SQL或resultMap配置,确保字段匹配。
摘要由CSDN通过智能技术生成

1、现象

mybatis版本从3.4.2升级到3.5.6之后,碰到一个问题select 值为空的问题,在3.4.2的版本下可以正常筛选出来。对应的mapper.xml文件如下所示。 结果digtAccArId字段为空,crdtfwdfacepicfilerte不为空。

<?xml vsersion="1.0" encoding="UTF-8"?>
<sqlMap namespace="xxxx">
    <resultMap id = "baseResult" type="com.test.info.testPO">
        <result column ="Digt_Acc_Ar_ID" property = "digtAccArId" />
        <result column ="CrdtFwdFacePicFileRte" property = "crdtfwdfacepicfilerte" />
    </resultMap>
    <sql id = "base_list">
        Digt_Acc_Ar_ID as digtAccArId,
        CrdtFwdFacePicFileRte as crdtfwdfacepicfilerte
    </sql>
</sqlMap>

2、概要分析

首先列举一下mybaits的数据库列和java的PO字段的映射方式:

  • 通过select ... as的这种加别名的方式映射

  • 通过resultMap的方式映射

  • 通过数据库表列明与PO字段名字相似的方式,并开启mapUnderscoreToCamelCase

下面通过举例说明

com.test.info.po的结构如下

public Class TestPO {
    private String digtAccArId;
    private String crdtfwdfacepicfilerte;
}

数据库表结构如下

create table test
(
    Digt_Acc_Ar_ID varchar(23),
    CrdtFwdFacePicFileRte varchar(10)
)

方式一、通过select ... as的这种加别名的方式映射,as后的字段是和PO的属性一致

<sql id = "base_list">
        Digt_Acc_Ar_ID as digtAccArId,
        CrdtFwdFacePicFileRte as crdtfwdfacepicfilerte
 </sql>

方式二、通过result

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值