记忆力不太好,自己记录一下下。
接口是这样的
@GetMapping("list")
public ApiResult list(@RequestBody ManagerListVO vo){
return ApiResult.success(managerService.list(vo));
}
实现是这样的
@Override
public IPage<ManagerDTO> list(ManagerListVO managerListVO) {
Integer pageSize = managerListVO.getPageSize();
Integer currentpage = managerListVO.getCurrentPage();
IPage<ManagerDTO> page = new Page<>(currentpage,pageSize);
IPage<ManagerDTO> result = this.baseMapper.page(page,managerListVO);
page.setTotal(result.getTotal());
List<ManagerDTO> records = result.getRecords();
if (CollectionUtils.isEmpty(records)){
return page;
}
page.setRecords(records);
return page;
}
我的这个代码中的result封装了许多数据,其中record就是从数据库里查询出来的数据,total是数据总条数,一般给前端也就返回这些就够了。所以page就放入这两个数据。
下边是xml文件也可以条件查询的
<select id="page" resultType="com.demo.dto.ManagerDTO">
select id,account,`name`,`type` from manager
<where>
<if test="vo.account != null">
and account = #{vo.account}
</if>
<if test="vo.name != null">
and `name` = #{vo.name}
</if>
<if test="vo.type != null">
and `type` = #{vo.type}
</if>
</where>
</select>
但是光这样写分页不起作用啊,你给他传参数pageSize=2,它也不管就把结果都返回了,total还是0.
后来我才知道,这需要一个配置文件T_T,感觉自己太蠢了
@Configuration
public class MybatisConfiguration {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
暂时就这样
简单的实现可以用mybatis-plus查询结果
IPage<UserMeeting> page = new Page<>(currentPage, pageSize);
LambdaQueryWrapper<UserMeeting> wrapper = Wrappers.lambdaQuery();
wrapper.eq(UserMeeting::getMeetingId, meetingId);
page = page(page, wrapper);
List<UserMeeting> list = page.getRecords();