有时候会遇到像按照某个特定条件查询的问题,查出来的数据要进行分页展示
首先定义一个工具类
public static void startPage(BaseParam param) {
int pageNum = 0;
int pageSize = 0;
if (param.getPageNum() != null && param.getPageSize() != null) {
pageNum = param.getPageNum();
pageSize = param.getPageSize();
} else if (param.getPageNum() == null || param.getPageSize() == null) {
log.error("StartPage Failed!");
}else {
log.error("Failed");
}
PageHelper.startPage(pageNum, pageSize);
}
其中的Baseparam是定义的分页(注解用了lombok)
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class BaseParam {
@Min(value = 1, message = "pageNum不能小于1")
protected Integer pageNum;
@Min(value = 1, message = "每页展示的条数不能为0")
protected Integer pageSize;
}
定义一个包装实体类继承Baseparam(下面这样)
public class FriendInfoParam extends BaseParam {
}
Dao层
List<FriendInfo> getFriendInfoByTags(FriendInfo friendInfo);
xml语句
<select id="getFriendInfoByTags" resultType="">
SELECT *
FROM
WX_FRIEND
WHERE
tags = #{tags, jdbcType=VARCHAR}
</select>
service层(里面的Common是工具类名)
public List<FriendInfo> getFriendInfoByTags(FriendInfoParam param) {
Common.startPage(param);
FriendInfo con = FriendInfo.builder().tags(param.getTags()).build();
return friendInfoDao.getFriendInfoByTags(con);
}
controller层
@RequestMapping("/getInfoByTags")
public Map<String, Object> getFriendInfoByTags(@RequestBody FriendInfoParam param) {
List<FriendInfo> data = friendInfoService.getFriendInfoByTags(param);
return Common.parsePageList(data, param);
}
前台传入需要的条件参数即可进行条件分页(其中pageNum , pageSize也要传入)
最后补充一点,前端显示页面的表单要将条件值传回后端才有用