传统的XML分页以及模糊查询操作
传统的XML方式只能使用limit以及offset进行分页,通过判断name和bindState是否为空,不为空则拼接条件。
List<SanitationCompanyStaff> getSanitationStaffInfo(@Param("name") String name,
@Param("bindState") String bindState,
@Param("current") Long current,
@Param("size") Long size);
<select id="getSanitationStaffInfo" resultType="com.yutu.garden.entity.SanitationCompanyStaff">
select * from sanitation_company_staff
where 0 = 0
<if test="name != null and name != ''">
and name like concat('%', #{name}, '%')
</if>
<if test="bindState != null and bindState != ''">
and bind_state like concat('%', #{bindState}, '%')
</if>
limit 5 offset 0
</select>
Mybatis Plus分页以及模糊查询操作
只需要在Service实现类中直接调用Mybatis Plus的方法即可进行操作。
/**
* 获取环卫工列表数据
* @param name:名字
* @param bindState:绑定状态
* @param current:页码
* @param size:每页大小
* @return
*/
@Override
public Page<SanitationCompanyStaff> getSanitationStaffInfo(String name,String bindState,Long current,Long size) {
LambdaQueryWrapper<SanitationCompanyStaff> wrapper = new LambdaQueryWrapper<>();
//如果前端传的name不为空,则进行like模糊查询
if (StringUtils.isNotEmpty(name)){
wrapper.like(SanitationCompanyStaff::getName,name);
}
//如果前端传的bindState不为空,则进行eq匹配
if (StringUtils.isNotEmpty(bindState)){
wrapper.eq(SanitationCompanyStaff::getBindState,bindState);
}
//通过current、size进行分页
Page<SanitationCompanyStaff> sanitationStaffInfoPage = new Page<>(current,size);
this.page(sanitationStaffInfoPage,wrapper);
return sanitationStaffInfoPage;
}
return Page<SanitationCompanyStaff>类型可以得到数据的总数,你也可以通过.getRecords()方式获取List集合
这样子,我们就可以通过Mybatis Plus得到分页数据了!