pageHelper在对mybatis一对多分页时造成查询总页数结果不对的情况。
可以做出如下修改:
service层:
public CommonResult worksList(String userId, int page, int pageSize) throws Exception {
PageHelper.startPage(page, pageSize);
List<DesignDTO1> dtos = designMapper.worksList(userId);
for (DesignDTO1 dto : dtos) {
checkDesignerEdit(dto);
}
PageInfo p = new PageInfo(dtos);
Map map = new HashMap();
map.put("rows", p.getList());
map.put("totalCount", p.getTotal());
return CommonResult.success(map);
}
xml配置文件
<resultMap id="ResultMapDesignDTO1" type="com.zhx.web.design.model.DesignDTO1"><id column="id" jdbcType="INTEGER" property="id"/><result column="works_id" property="worksId" jdbcType="VARCHAR"/><result column="works_name" property="worksName" jdbcType="VARCHAR"/><result column="status" property="status" jdbcType="INTEGER"/><result column="work_status" property="workStatus" jdbcType="INTEGER"/><result column="status_msg" property="statusMsg" jdbcType="VARCHAR"/><result column="create_time" property="createTime" jdbcType="TIMESTAMP"/><result column="works_img_cover" property="workCoverImg" jdbcType="VARCHAR"/><association property="userInfo" javaType="com.zhx.web.design.model.UserDTO"><result column="user_id" property="userId" jdbcType="VARCHAR" /><result column="real_name" property="realName" jdbcType="VARCHAR" /><result column="user_email" property="userEmail" jdbcType="VARCHAR" /><result column="unit_name" property="unitName" jdbcType="VARCHAR" /><result column="user_phone" property="userPhone" jdbcType="VARCHAR" /></association><collection property="worksLog" ofType="com.zhx.web.design.model.WorksLog"column="works_id"//这个参数会作为子查询的参数,需要和实体的属性参数一致select="com.zhx.web.design.mapper.DesignMapper.getWorksLogs"></collection></resultMap><select id="getWorksLogs" resultMap="WorksLogs" parameterType="java.lang.String">SELECT oper_time,memoFROM works_log where works_id =#{worksId}//这里用works_id好像也没问题……测试了几次,用错误参数也能传递过来,
就是个占位符,实际参数会从collection中的column中传递过来
</select> <!--查询用户上传作品列表--> <select id="worksList" resultMap="ResultMapDesignDTO1" parameterType="java.lang.String"> SELECT ui.user_id,ui.real_name,ui.user_email,ui.unit_name,ui.user_phone,uw.id,uw.works_id ,uw.works_name, uw.create_time ,uw.status_show as status,uw.status as work_status,uw.works_img_cover, <include refid="showStatusMsg"></include> from user_works uw ,user_info ui where uw.user_id = ui.user_id and uw.user_id = #{userId} </select>
实体类
package com.zhx.web.design.model;import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize;import java.util.Date; import java.util.List; @JsonSerialize(include= JsonSerialize.Inclusion.NON_NULL) public class DesignDTO1 {/*** 作品联系人信息*/private UserDTO userInfo;private Integer id;/*** 作品编号*/private String worksId;/*** 作品名称*/private String worksName;/*** 上传时间*/@JsonFormat(pattern="yyyy年MM月dd日")private Date createTime;/*** 状态status_show*/private Integer status;/*** 状态描述*/private String statusMsg;/*** 作品封面图(图片名称)*/private String workCoverImg;/*** 是否可修改*/private Integer edit;/*** 可修改剩余时间*/private Long edtiTime;/*** 业务状态status*/private Integer workStatus;/*** 作品审核信息*/private List<WorksLog> worksLog;public UserDTO getUserInfo() {return userInfo;}public void setUserInfo(UserDTO userInfo) {this.userInfo = userInfo;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getWorksId() {return worksId;}public void setWorksId(String worksId) {this.worksId = worksId;}public String getWorksName() {return worksName;}public void setWorksName(String worksName) {this.worksName = worksName;}public Date getCreateTime() {return createTime;}public void setCreateTime(Date createTime) {this.createTime = createTime;}public Integer getStatus() {return status;}public void setStatus(Integer status) {this.status = status;}public String getStatusMsg() {return statusMsg;}public void setStatusMsg(String statusMsg) {this.statusMsg = statusMsg;}public String getWorkCoverImg() {return workCoverImg;}public void setWorkCoverImg(String workCoverImg) {this.workCoverImg = workCoverImg;}public Integer getEdit() {return edit;}public void setEdit(Integer edit) {this.edit = edit;}public Long getEdtiTime() {return edtiTime;}public void setEdtiTime(Long edtiTime) {this.edtiTime = edtiTime;}public Integer getWorkStatus() {return workStatus;}public void setWorkStatus(Integer workStatus) {this.workStatus = workStatus;}public List<WorksLog> getWorksLog() {return worksLog;}public void setWorksLog(List<WorksLog> worksLog) {this.worksLog = worksLog;} }