mysql在使用多表联查并且使用collection标签映射结果是分页无效问题

前景: 毕设在使用javaType映射时一直没发现问题,后来需要映射出结果集中的l一个属性ist集合,发现问题

在使用多表联查并且使用collection标签映射结果后,无论是使用原生limit分页还是PageHelper(底层依旧是limit) 都是对查询结果直接分页,并不是对映射后的结果分页
以下是我的sql

SELECT v.id,v.title,v.brief,v.publish_date,v.path,v.cover,v.user_id,v.group_id,
        c.id cid ,c.category_name cname,
        l.id lid ,l.name lname
--         FROM video v
        FROM (SELECT * FROM video
        <if test="null != page.pageNum and null != page.pageSize">
             LIMIT #{page.pageNum},#{page.pageSize}
        </if>
        ) v
        LEFT JOIN category c ON v.category_id = c.id AND c.delete_flag = 0 AND c.is_instrument = 0
        LEFT JOIN label_site ls  ON v.id = ls.use_site AND ls.delete_flag = 0
        LEFT JOIN label l ON ls.label_id = l.id AND l.delete_flag = 0
        <where>
            v.delete_flag  = 0
            <if test="page!=null">
                <if test="page.keyword != null and '' != page.keyword">
                    AND (v.title LIKE CONCAT('%',#{page.keyword},'%') OR l.name LIKE CONCAT('%',#{page.keyword},'%'))
                </if>
            </if>
            <!--<if test="null != page.pageNum and null != page.pageSize">
                LIMIT #{page.pageNum},#{page.pageSize}
            </if>-->
        </where>

尝试解决后发现如果 我没有对 label表也进行同时关键词查询,那么使用我上方提前对主表进行分页在进行连接那么是没问题的。

  -- FROM video v
        FROM (SELECT * FROM video
        <if test="null != page.pageNum and null != page.pageSize">
             LIMIT #{page.pageNum},#{page.pageSize}
        </if>
        ) v

无奈我的解决思路:

  1. 查询不用limit , java假分页 查询出结果后分页
  2. 使用主表提前分页思路,不关联标签表。在查询出结果后,再次查询标签表使用label表中use_site 为ke封装成map集合,在嵌入分页后的视频结果集中。

有什么好的办法或是思路 大家可以评论下!!~!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值