myBatis常见问题(⼀)查询结果字段为null
问题描述:
查询认购单详情
<lect id="adminGetDatail" resultMap="SubscriptionPO" parameterType="56.dule.bm.vo.ProductSubscriptionVO" > SELECT
FROM bm_subscription AS a JOIN ms_member AS c
where 1=1
<if test="subscriptionId != null" >
and a.subscription_id = #{subscriptionId,jdbcType=CHAR}
</if>
<if test="memberId != null" >
节能降耗>遗失的童真
and c.member_id = #{memberId,jdbcType=CHAR}
</if>
</lect>
<resultMap id= "SubscriptionPO" type = "56.dule.bm.po.SubscriptionPO">
<id column="subscription_id" property="subscriptionId" jdbcType="CHAR" />
<result column="phone" property="phone" jdbcType="CHAR" />
<result column="real_name" property="realName" jdbcType="VARCHAR" />
</resultMap>
/**
* admin
* 获取认购单详情异形契约下载
* @param vo
* @return
鸡扒的做法*/
public String adminGetDatails(ProductSubscriptionVO vo){欲穷千里目
if (StringUtils.SubscriptionId())) {
return buildFailResult(SystemStatusEnum.ILLEGAL_PARAMETER, "请传⼊认购单ID");
}
if (StringUtils.MemberId())) {
return buildFailResult(SystemStatusEnum.ILLEGAL_PARAMETER, "请传⼊会员ID");
}
SubscriptionPO po = dao.adminGetDatail(vo);
if (po == null) {
return buildFailResult(SystemStatusEnum.NO_DATA);
}
SubscriptionVO subscriptionVO = ateByJson(SubscriptionVO.class, po);
return buildSuccessResult(subscriptionVO, fal);
}
结果为:
从sql语句上看,明明我查了3个字段,姓名、电话、⾝份证号码。问题是少了⾝份证号码字段。为什么呢?
星际养猫指南问题分析:
myBatis通过xml⽂件把查询的结果resultMap映射到type实体类中。穿的组词
我们检查resultMap与type实体类,发现type实体类中有⾝份证号码字段,但resultMap没有⾝份证号码字段。造成查询结果⽆法映射给实体类,所以我们在最终的结果中看不到⾝份证号码字段。
问题解决:
在resultMap中增加⾝份证号码字段。
<resultMap id= "SubscriptionPO" type = "56.dule.bm.po.SubscriptionPO">
<id column="subscription_id" property="subscriptionId" jdbcType="CHAR" />
<result column="phone" property="phone" jdbcType="CHAR" />
<result column="real_name" property="realName" jdbcType="VARCHAR" />
动物的歇后语<result column="idcard_no" property="idcardNo" jdbcType="VARCHAR" />
</resultMap>
然后运⾏代码,发现问题已解决。