关于MyBatis-Plus 一对多关联查询的分页问题

问题场景:
 
   一般查询 记录表 T_CONTENT和记录附件表 T_CONTENT_FILE这两个表的数据,一个T_CONTENT 对应多个 T_CONTENT_FILE。
 
(1)     查询content  list时,基本上都是先分页查询 list,遍历list再次查询 fileList。这样循环查询效率较慢,不提倡这种查询方法。
 
(2)     运用Mybatis-Plus 的 关联查询方法 collection(一对多)、association(一对一);

"ExtraResultMap" type="com.demo.test.Content">

    "C_ID" property="id"/>

    "C_TITLE" property="title"/>

    "C_CONTENT" property="content"/>

    "fileList"  ofType="com.demo.test.ContentFile">

           "C_FILE_ID" property="fileId"/>

           "C_FILE_NAME" property="fileName"/>

           "C_CONTENT_ID" property="contentId"/>     

    

 

 

 

 

List selectPageList(QueryBean bean,Page page);

        在Mybatis-Plus传输一个Page对象就能自动分页。因为使用一对多关联查询,分页是对关联后的表记录进行查询的,所以  page没有对主表T_CONTENT进行分页,会造成分页信息不准确问题,达不到我们想对T_CONTENT进行分页同时获取每项的所有附件信息。这种情况下,我们需要采用Mybatis-Plus独立子查询来解决问题:

 

"ExtraResultMap" type="com.demo.test.Content">

    "C_ID" property="id"/>

    "C_TITLE" property="title"/>

    "C_CONTENT" property="content"/>

    "fileList"  column="C_ID" select="selectFileList" ofType="com.demo.test.ContentFile">

    

 

 

"FileMap" type="com.demo.test.ContentFile">

    "C_FILE_ID" property="fileId"/>

    "C_FILE_NAME" property="fileName"/>

 

 

 

 

 

 

 

 

List selectPageList(QueryBean bean,Page page);

这样即可解决一对多关联查询分页不准确的问题。

你可能感兴趣的:(主流框架)