首页 新闻 会员 周边 捐助

mybatis 多对多查询使用pagehelper插件分页分页出问题

0
[已解决问题] 解决于 2018-08-06 11:31

在使用分页插件时 涉及到多对多查询,也就是中间表关联,但是如果用联合查询,pagehelper分页插件默认limit是在语句最末端,但是我想自己实现pagesize和pagenumber在主表后面,这样查出来的数据就可以正常分页,否则就会出现重复的也算做分页的数据,

那我应该如何即用到pagehelper插件,又能自己将参数写在mapper.xml中的sql语句中

suc-浮生的主页 suc-浮生 | 菜鸟二级 | 园豆:202
提问于:2018-08-06 08:45
< >
分享
最佳答案
0

mapper中参数控制就好,把分页的那两个参数

奖励园豆:5
全力以赴001 | 小虾三级 |园豆:629 | 2018-08-06 10:16

???,直接将参数在sql语句中写上?然后方法上不用管,到时候直接用pagehelper带参数?他会自动到我写的sql中?

suc-浮生 | 园豆:202 (菜鸟二级) | 2018-08-06 10:21

@suc-浮生: 你想控制limint位置有两个方法,一个是sql本身控制,不采用pagehelper,或者在用pageHelper用单sql查询功能,然后通过数据组装查询多次把结果返回回去

全力以赴001 | 园豆:629 (小虾三级) | 2018-08-06 10:23
/*    
        PageHelper.startPage(pn, 3);
        List<Sys_User> u_list=userService.getAllPageUser();
        PageInfo<Sys_User> page = new PageInfo<>(u_list,3);
        
        model.addAttribute("pageInfo", page);
*/

//======================================
mapper.xml
    SELECT
            u.*,
            r.`name` as o_rolename,
            r.id as o_id
        FROM
            (select * from sys_user limit(#{pn},#{ps})) u
        LEFT JOIN sys_role_user sru ON sru.Sys_User_id=u.id
        LEFT JOIN sys_role r ON r.id=sru.Sys_Role_id
        LEFT JOIN sys_permission_role spr ON spr.role_id =r.id
        LEFT JOIN sys_permission p ON p.id =spr.permission_id
        ORDER BY createdate DESC 
suc-浮生 | 园豆:202 (菜鸟二级) | 2018-08-06 10:25

@全力以赴001: 我想用他的这个插件,但是想自己将俩参数位置确定

suc-浮生 | 园豆:202 (菜鸟二级) | 2018-08-06 10:26

@suc-浮生: 你最终结果就查询了用户信息与角色信息,你其余的数据不知道是不是多余,一个left join 就完事的事情,这样写sql要被挨打的。你想用的那个插件本事是把limint加在尾部的,试一试修改一下sql吧

全力以赴001 | 园豆:629 (小虾三级) | 2018-08-06 10:31

@全力以赴001: emmmm,确实要挨打,我在他的github看到这句话,如果支持分页参数传递的话那我是不是可以自己写就像上面的那个位置,我知道他默认的是加在尾部的,但是我想的能不能在PageHelper.startPage(pn, 3);穿过来时自动装在我写的那个位置(别打我我就想问问能不能行^_^)

supportMethodsArguments:支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。 使用方法可以参考测试代码中的 com.github.pagehelper.test.basic 包下的 ArgumentsMapTest 和 ArgumentsObjTest。
suc-浮生 | 园豆:202 (菜鸟二级) | 2018-08-06 10:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册