mybatis-plus分页,自定义返回的结果类型,实现分页
通过自己自定义返回的实体类型,这里用泛型 “T” 举例,真正开发时换成具体的实体类;通过将 mybatis-plus提供的Page 封装的分页,实现传入到xml中,查询数据,自动计算总条数,当前页码,每页显示条数,总页数等参数。省去自己再手动封装分页,最后将查询的结果,设置到分页插件数据中,返回整个分页实体即可(注:xml中,最后不需要再写limit 参数进行分页了)。
//控制层
@equestMapping("/getData")
public ResultBody getData(String taskName, String enterpriseName, String startTime,String endTime, Page<T> page) {
return shopDetectService.getData(taskName, startTime, endTime, page);
}
//service 实现层
@Override
public ResultBody getData(String taskName, String startTime, String endTime, Page<T> page) {
List<T> result= shopDetectMapper.getData(taskName, startTime, endTime, page);
//不为空
if (!CollectionUtils.isEmpty(result)){
//数据再处理
......
}
//设置数据
page.setRecords(result);
return ResultBody.success(page);
}
//mapper层
List<T> getData(@Param("taskName") String taskName, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("page") Page<T> page);
//xml层
<select id="getData" resultType="com.test.T">
SELECT
d.title taskName,
s.shop_name shopName,
CONCAT( d.agent_start_date,'~', d.agent_end_date) detectTime,
d.creator_id,
t.update_time reportUpdateTime,
IFNULL(u.show_name, u.mobile_phone) showName
FROM
is_detect_c_user_task t
INNER JOIN 表1 d ON t.detect_id= d.id
INNER JOIN 表2 s ON t.shop_id = s.id
INNER JOIN 表3 u ON t.user_id = u.id
WHERE
1 = 1
<if test="taskName != null and taskName != ''">
AND d.title like CONCAT ('%', #{taskName}, '%')
</if>
<if test="startTime != null and startTime != ''">
AND t.update_time >= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND t.update_time <= #{endTime}
</if>
ORDER BY t.update_time desc
</select>