Mybatis-Plus框架中使用IPage进行一对多分页的bug及修复

场景

做一个刷题app,需要分页显示所有题目。每个题目有多个选项。分页时原希望每页10题,带上所有选项,现在却变成只有几个题目,而他们的选项数之和为10。

修复

xml配置中,将对多部分的映射加上select属性,单写方法进行查询。

同时,原查询方法中加入DISTINCT限定。

若使用ORDER排序,则SELECT中还需加上排序字段。

代码

question.xml




    
        
        
        
    
    
        
        
        
        
        
    
    

    

QuestionRepository.java

@Mapper
@Repository
public interface QuestionRepository extends BaseMapper {

    IPage selectAllWithKey(
            IPage page,
            @Param("keyWord") String keyWord,
            @Param("type") Short type,
            @Param("teacherId") Long teacherId);

}

QuestionWithKey.java

@Data
@With
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class QuestionWithKey implements Serializable {
    
    private static final long serialVersionUID = 4192873408617718827L;
    
    private Long id;

    private Short type;

    private String content;

    private Date date;

    private List keys;

}

KeyPO.java

@Data
@With
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("t_question_key")
public class KeyPO implements Serializable {

    private static final long serialVersionUID = 9117947918115257855L;

    @TableField("question_id")
    private Long questionId;

    @TableField("key_id")
    private Short keyId;

    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    @TableField("answer_content")
    private String content;

    @TableField
    private Boolean correct;
}

你可能感兴趣的:(Spring,Boot,mybatis,bug)