【MyBatis】分页组件PageHelper和SQLServer的多表关联分页查询问题

分页组件PageHelper和SQLServer的多表关联分页查询问题

原来使用4.1.7,当2个表关联查询的时候如果有同名,Select的时候给予了别名,使用PageHelper.orderBy("别名"),会出现错误

因为生成的语句是

SELECT TOP 3 Name,CTypeId FROM 
(
SELECT ROW_NUMBER() OVER ( ORDER BY TypeId DESC) PAGE_ROW_NUMBER, A.Name,A.TypeId as CTypeId FROM Customer A 
LEFT JOIN CustomerType B ON A.TypeId = B.TypeId
) AS PAGE_TABLE_ALIAS 
WHERE PAGE_ROW_NUMBER > 0 
ORDER BY PAGE_ROW_NUMBER  

因为(ORDER BY TypeId DESC)中TypeId是不知道哪个表的

后来查看更新记录,后面的版本更新了这个问题

现在使用最新版本5.1.3,生成的语句是

SELECT TOP 3 Name,CTypeId FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY CTypeId DESC) 
    PAGE_ROW_NUMBER, Name, CTypeId FROM (
        SELECT A.Name, A.TypeId AS CTypeId 
        FROM Customer A LEFT JOIN CustomerType B ON A.TypeId = B.TypeId
    ) AS PAGE_TABLE_ALIAS
) AS PAGE_TABLE_ALIAS 
WHERE PAGE_ROW_NUMBER > 0 ORDER BY PAGE_ROW_NUMBER 

可见其中增加了一个子查询,解决了这个问题

posted @ 2018-04-14 17:25  LiveYourLife  阅读(5662)  评论(0)    收藏  举报