中国最新军事新闻,网站优化推广,分析海报的网站,上海网站建设联系电话现象
对于单表查询是没有问题的。而需要多表关联查询#xff08;自写sql#xff09;时#xff0c;就会查询调用Mybatis-Plus的.page(Page page,Wrapper queryWrapper);
可以看到后台实际执行sql有两个。 一个是查询sql的数据#xff1a;
selectvisit.id as id,visit.rfi…现象
对于单表查询是没有问题的。而需要多表关联查询自写sql时就会查询调用Mybatis-Plus的.page(Page page,Wrapper queryWrapper);
可以看到后台实际执行sql有两个。 一个是查询sql的数据
selectvisit.id as id,visit.rfid_card_num as rfidCardNum,cp.id as bizClinicalPathId,users.nickname as nickNamefrom ecqm_biz_patient_visit visitleft join ecqm_biz_clinical_path cp on visit.id cp.pv_id and cp.deleted 0left join system_users users on users.id visit.creator and users.deleted 0WHERE visit .deleted 0另一个为统计Total数量的sql 但是查询total的语句却是:
select count(*) from ecqm_biz_patient_visit visit
where visit .deleted 0显然是有问题的
原因
这是因为对查询进行了优化只查主表符合查询条件的总条数这就导致两条查询sql的表数量不一致从而导致查询总条数不一致的情况。
com.baomidou.mybatisplus.extension.plugins.pagination.Page源码 /*** 自动优化 COUNT SQL*/protected boolean optimizeCountSql true;/*** 是否进行 count 查询*/protected boolean searchCount true;......其他源码省略public PageT setOptimizeCountSql(boolean optimizeCountSql) {this.optimizeCountSql optimizeCountSql;return this;}解决方案
关闭分页查询优化即可 page.setOptimizeCountSql(false)。
PageBizPatientVisitRespVO page new Page(pageReqVO.getPageNo(),pageReqVO.getPageSize());
//关闭分页查询优化
page.setOptimizeCountSql(false);
PageVO result bizPatientVisitMapper.getInPatient(page,pageReqVO );
return new PageResult(result.getRecords(), result.getTotal());