mybatis查询嵌套之参数传递

今天花了一下午时间发现了mybatis的一个用法,就是查询嵌套传参的时候会把集合中的参数给“”用掉”,所谓用掉,就是作为参数传递给嵌套查询的参数不会在返回结果集中显示。解决办法就是做两个参数命不同的名字,一个用作查询嵌套的传递,另外一个用作结果集的返回。

上例子:

<select id="getCoreTerminalInfoByBranchSysNo_2" resultMap="bmTerminalWithCharges_2" parameterType="java.util.Map">
		SELECT
			BT.TERMINAL_SYS_NO as mtSysNo,
			MCA.TERMINAL_NO AS terminalNo,
			MCA.TERMINAL_NO AS terminalNo1,
			BT.PRINT_SHOP_NAME AS printShopName,
			BT.PROGRAM AS program,
			BT.SERV_MODEL AS servModel,
			MCA.EFFECT_DATE AS effectDate,
			MCA.INSTALL_DATE AS installDate,
			MCA.UNINSTALL_DATE AS uninstallDate,
			BT.TERMINAL_NUM AS terminalNum,
			BT.FIXED_POS_NUM AS fixedPosNum,
			BT.MOVE_POS_NUM AS movePosNum,
			BT.MPOS_NUM AS mposNum,
			BT.DEV_TYPE_REMARK as devTypeRemark,
			BT.RATE_MODE_FLG as rateModeFlg,
			MCA.TRANSACTION_TYPE as transactionType,
			BT.TRANSACTION_TYPE AS transactionType1
		FROM M_CARD_APP MCA
		LEFT JOIN BM_TERMINAL BT ON BT.TERMINAL_SYS_NO = MCA.TERMINAL_SYS_NO
		LEFT JOIN BM_BRANCH BB ON BB.BRANCH_SYS_NO = BT.BRANCH_SYS_NO
		WHERE BB.BRANCH_SYS_NO = #{branchSysNo}
	</select>

<resultMap id="bmTerminalWithCharges_2" type="java.util.HashMap">
		<collection property="chargeDetails" column="{mtSysNo=mtSysNo}" select="searchBmChargeDetailListByMtSysNo_Map"/>
		<collection property="mAccount" column="{terminalSysNo=mtSysNo,terminalNo=terminalNo1}" select="selectMAccountByTermimalSysmNoAndTerminalNo"/>
		<collection property="mRateInfos" column="{terminalSysNo=mtSysNo,terminalNo=terminalNo1}" select="selectMRateInfosByTermimalSysmNoAndTerminalNo"/>
	</resultMap>
	
传递参数用了terminalNo1,而返回结果用terminalNo.
为了发现这个问题前后做了二三十条数据,排除了集合问题,参数个数问题,返回类型问题等情况,最后把问题限定到了只跟terminalNo这个字段。因为没有仔细对比缺失字段跟原集合的关系,所以我没有最终发现问题,还是让小组长帮我搞定。这也说明了有的看似很诡异的问题其实是可以自己发现自己解决的,前提是解决方法要正确,并且要细心,一个不小心就会让你在最后关头和成功失之交臂。当然,这只是个小问题,没那么严重,哈哈。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值