一对多映射解析_n+1问题

iBATIS一对多映射之中继VO如下属性:

 
  1. public class RelayInfoVO {  
  2.   //中继信息  
  3.   private String bswitcherNames;//本端局  
  4.   private String dswitcherNames;//对端局  
  5.   private String signalStatCount;//信令数  
  6.   private String relayStatCount;//中继数  
  7.   private List signalVO;//信令List,用来存放信令List的  
  8.     
  9.   ……  

iBATIS一对多映射信令VO如下属性:

 
  1. public class SignalInfoVO {  
  2.   //信令信息  
  3.   private String bswitchers;//本端局  
  4.   private String dswitchers;//对端局  
  5.   private String signalType;//信令类型  
  6.   private String signalCount;//信令个数  
  7.  
  8.   ……  

iBATIS的XML如下配置:

注:为中继

VO,column="{bswitcherNames=bswitcherName,dswitcherNames=DSWITCHERNAME}" 是为select="getSignalInfo"所传递的参数。select="getSignalInfo"为所要调用的SELECT查询语句。

 
  1. ﹤resultMap id="RelayInfoVO-Result-list" class="com.harvest.ermis.rscount.domain.RelayInfoVO"﹥  
  2.   ﹤result property="bswitcherNames" column="BSWITCHERNAME" nullValue=""/﹥  
  3.   ﹤result property="dswitcherNames" column="DSWITCHERNAME" nullValue=""/﹥  
  4.   ﹤result property="signalStatCount" column="SIGNALSTATCOUNT" nullValue=""/﹥  
  5.   ﹤result property="relayStatCount" column="RELAYSTATCOUNT" nullValue=""/﹥  
  6.   ﹤result property="signalVO" column="{bswitcherNames=bswitcherName,dswitcherNames=DSWITCHERNAME}" select="getSignalInfo"/﹥  
  7. ﹤/resultMap﹥ 

注:为信令VO

 
  1. ﹤resultMap id="SignalInfoVO-Result-list" class="com.harvest.ermis.rscount.domain.SignalInfoVO"﹥  
  2.   ﹤result property="bswitchers" column="BSWITCHERS" nullValue=""/﹥  
  3.   ﹤result property="dswitchers" column="DSWITCHERS" nullValue=""/﹥  
  4.   ﹤result property="signalType" column="SIGNALTYPE" nullValue=""/﹥  
  5.   ﹤result property="signalCount" column="SIGCOUTN" nullValue=""/﹥  
  6. ﹤/resultMap﹥  
  7.  
  8.  
  9.  
  10. ﹤select id="getRSInfo" resultMap="RelayInfoVO-Result-list"﹥  
  11.     
  12.     ……  
  13.  
  14. ﹤/select﹥  
  15.  
  16.  
  17. elect id="getSignalInfo" resultMap="SignalInfoVO-Result-list"﹥  
  18.       select c.switcherName as BSWITCHERS,b.switcherName as DSWITCHERS,linkType as SIGNALTYPE,count(*) as SIGCOUTN  
  19.       where   
  20.         c.switcherName=#bswitcherNames#  
  21.       and b.switcherName=#dswitcherNames#  
  22.       group by b.switcherName,b.ATTACHING,c.switcherName,linktype  
  23.       order by c.switcherName,b.SWITCHERORDER,linktype  
  24. ﹤/select﹥ 

上面会有N+1问题,但提供了传多参方法。

 

下面解决List<String>映射问题:

<resultMap class="TaskUser" id="TaskUserResult" groupBy="patNo">
   <result property="patNo" column="T_NO" />
   <result property="userList" resultMap="PatTask.StringList"/>
  </resultMap>
 
  <resultMap id="StringList" class="java.lang.String">
   <result property="" column="NAME"/>
  </resultMap>

 

<select id="selectAllPatNoWithUser" resultMap="TaskUserResult">
   <![CDATA[
    select t.T_NO,u.NAME FROM pat_task t,tblUser u where t.T_ExUID=u.id;
   ]]>
  </select>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值