MyBatis Plus 进行自定义 SQL 语句分页查询时,报错selectOne 处理

282 阅读1分钟

1. 返回实体vo

@Data
public class GlbecoPhyunitAlarmPageRes extends GlbecoPhyunitAlarmEntity {
    /**
     * 机组名称
     */
    private String unitName;
}

在原有实体上做一些扩展字段迭代

1. mapper 接口实现

public interface IGlbecoPhyunitAlarmMapper extends BaseMapper<GlbecoPhyunitAlarmEntity> {

    /**
     * 关联机组分页查询
     */
    IPage<GlbecoPhyunitAlarmPageRes> queryJoinUnitPage(Page<GlbecoPhyunitAlarmEntity> page,@Param(Constants.WRAPPER) QueryWrapper<GlbecoPhyunitAlarmEntity> queryWrapper);
}

注意,必须分页参数在前,查询条件在后

否则,底层代码会跳到 selectOne

2. mapper xml 实现

<select id="queryJoinUnitPage" resultType="com.g_link.TwoRules.vo.agc.GlbecoPhyunitAlarmPageRes">
    select * from
    (SELECT a.*,u.CAPTION as unitName FROM GLBECO_PHYUNIT_Alarm a
    LEFT JOIN GLBECO_PHYUNIT u on a.PHYUNIT_ID=u.ID) t
    ${ew.customSqlSegment}
</select>

查询语句用括号包起来,目的是,防止查询条件中如 date 字段,两张表都存在则会报错