myBatis 常见问题(一)查询结果字段为null

问题描述:

查询认购单详情

<select id="adminGetDatail" resultMap="SubscriptionPO" parameterType="com.money56.ifmp.api.module.bm.vo.ProductSubscriptionVO" >
  	SELECT 
        c.real_name,c.phone,c.idcard_no
	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>
  	</select>
<resultMap id= "SubscriptionPO" type = "com.money56.ifmp.api.module.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.isBlank(vo.getSubscriptionId())) {
			return buildFailResult(SystemStatusEnum.ILLEGAL_PARAMETER, "请传入认购单ID");
		}
		if (StringUtils.isBlank(vo.getMemberId())) {
			return buildFailResult(SystemStatusEnum.ILLEGAL_PARAMETER, "请传入会员ID");
		}
		SubscriptionPO po = dao.adminGetDatail(vo);
		if (po == null) {
			return buildFailResult(SystemStatusEnum.NO_DATA);
		}
		SubscriptionVO subscriptionVO = VoFactory.createByJson(SubscriptionVO.class, po);
		return buildSuccessResult(subscriptionVO, false);
	}

结果为:


从sql语句上看,明明我查了3个字段,姓名、电话、身份证号码。问题是少了身份证号码字段。为什么呢?


问题分析:

myBatis通过xml文件把查询的结果resultMap映射到type实体类中。

我们检查resultMap与type实体类,发现type实体类中有身份证号码字段,但resultMap没有身份证号码字段。造成查询结果无法映射给实体类,所以我们在最终的结果中看不到身份证号码字段。


问题解决:

在resultMap中增加身份证号码字段。

<resultMap id= "SubscriptionPO" type = "com.money56.ifmp.api.module.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>
然后运行代码,发现问题已解决。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值