Ibatis 学习 记录1

感觉以前ibatis学习得不够精细,最近又回过头来学习了一遍。

 

一,在实际应用中我们可能遇到这么一种场景:

  1. 首先从一张表里搜索出一批会员的数据,对一些状态等字段进行筛选。
  2. 筛选后的那些会员数据要关联到另外一张表中去查。然后再筛选
  3. 重复2步骤。
  4. 最后拼装这么多表里面需要的会员数据

    如果用SQL语句拼接是可以解决这种CASE的,但是会大大影响SQL执行的速度,给数据库带来压力。所以有些大数据量情况下需要用程序,分几个SQL去依次查询,最后拼装这么多表里面查出来的有关数据。

    这样子的话如果能够一查出来就形成这样一种数据结构

 

 {memberId1=XXXObject,memberId2=XXXObject,   ……}就好了

 

  看到 IBATIS 可以用queryForMap来搞定

    然后查寻出的HashMap还可以根据自己指定的字段作为Key值。那我这个CASE如果用会员的memberId作为这个返回MAP的KEY值的话,程序里面数据结构的问题就解决了。

 

如以下SQL 配置

<select id="MS-FIND-APPLYING-MEMBER-ID-PAGINATOR-LIST" parameterClass="TA-SERVICE-RECORD-PARAM" resultMap="RM-SERVICE-RECORD"><!-- 这里的RM-SERVICE-RECORD-->假定已经定义了 

SELECT GMT_CREATE,
GMT_MODIFIED,
MEMBER_ID,
PAYMENT_ID

……

from service_record

where

……

</select>

 用这个函数来获取到的MAP就是,一个会员的member_id对应这个会员查出来的所有信息的一个MAP。是一个MAP的嵌套。

public static Map selectApplyMembers(ServiceRecordParam param, String id) throws SQLException {
        return sqlMapper.queryForMap("MS-FIND-APPLYING-MEMBER-ID-PAGINATOR-LIST", param, id);
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值