首页 > 编程知识 正文

mybatis查询大量数据,查询第2或者3表无对应1表情况

时间:2023-05-06 04:32:12 阅读:33866 作者:3624

我的贝丝把页面分开并返回数据是错误的。 返回的列表数量错误。 解决数据混乱的问题写完之后,写的文字有点多。 我想看解决方法的直接代码部分。 前几天工作的时候,遇到了一个问题。 我第一次遇到了这个问题。 我烦恼的时候,打开博客,进入知识论坛,抽~~~,啧啧,是的。

感谢分享知识的伟大先生。 请不要绕着新员工烂门走。 闲话不多说,前天我查数据库多条数据时,前端交给页码和页面记录条数,用mybatis的分页插件pagehelper分页。 我知道这个分页插件的原理大致是调查select语句的limit起作用,但快速柠檬对调查的数据进行筛选,添加或添加

我遇到的问题是

返回数据的总数与前页上显示的不同。 返回数据的总数如前页所示,但多次更换页码会导致数据混乱; 为什么会出现这个问题呢? 实际上,mybatis分页插件会将limit添加到select语句中,在查询时有条件地过滤数据,并返回特定数据。 但是,我追加删除了从查询中出来的数据。 虽然最后返回的数据不再是来自sql查询的数据,但mybatis分页插件将返回的数据作为来自sql查询的数据总量。 其中也包括线程的问题,详细原理请另行在大人物的文章中调查。 于是,我遇到了上边数据混乱的问题。

其实解决方法也很简单。 对具有mybatis分页插件的方法执行重写,最后筛选的数据作为总数据,而不对sql执行limit查询。 如果您想详细了解原因,请访问pagehelper的源码

接下来是我的解决方法。

page helper.start page (当前页,pageSize; listuser users=event mapper.find user (user; if(user.getaccount_id )!=null event.getAccount_id ()!=0(iteratoruserit=users.iterator ); wile(it.Hasnext () ) {User user1=it.next ); if (! user.getaccount_id(.equals ) user.getAccount_id ) ({it.remove ); } } pageinfouserpageinfo=newpageinfouser (users; returnresultvueutil.resultvuesuccess (页面信息; 大致的代码是根据自己的条件删除了查询中出现的list。 而且,当前代码运行后显示在前端页面上的数据很混乱。 我不会把图片贴在大家身上。

我修改的代码如下,不一致的地方被评论了。

//删除此分页符。 //page helper.start page (目前页,页); listuser users=event mapper.find user (user; if(user.getaccount_id )!=null event.getAccount_id ()!=0(iteratoruserit=users.iterator ); wile(it.Hasnext () ) {User user1=it.next ); if (! user.getaccount_id(.equals ) user.getAccount_id ) ({it.remove ); }//清除原始new的pageinfo,//pageinfouserpageinfo=newpageinfouser (users ); //换成自己的方法pageinfouserpageinfo=page utils.getpage info (current page,pageSize,users ); returnresultvueutil.resultvuesuccess (页面信息; PageUtils.java

/** * pagehelper手动分页符* * @param currentPage当前页* @ param pagesize * @ paramlist * @ paramt * @ return */publicstationt page if (总页面(int toindex=pagesize * current page; if (toindex总) { toindex=总; } list=list.sublist (pagesize * (current page-1 ),toIndex ); }pagetpage=newpage(currentpage,pageSize; page.addall (列表; page.setpages ((总页面大小-1) /页面大小); page.set total (总); pageinfotpageinfo=new page info (page; 返回页面信息; }这样执行的话,就不会出现记录和想要展示的数据记录不一致的问题。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。