zoukankan      html  css  js  c++  java
  • Mybatis下collections使用pageHelper进行分页

    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,memo
            FROM 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;
        }
    }
  • 相关阅读:
    NopCommerce 增加 Customer Settings
    NopCommerce 增加 Customer Attributes
    [转]How to add new table in NopCommerce
    [转]教你一招
    [转]Oracle 修改或者删除临时表 ORA-14452: 试图创建, 更改或删除正在使用的临时表中的索引
    NopCommerce 发布时 Could not load file or assembly 'file:///...Autofac.3.5.2lib et40Autofac.dll' or one of its dependencies
    NopCommerce 关于Customer的会员类别及会员价处理 的尝试途径
    诸葛亮-诫子书
    [书目20161206]小狗钱钱的人生整理术
    [转]NopCommerce How to code my own payment method
  • 原文地址:https://www.cnblogs.com/SimonHu1993/p/9225764.html
Copyright © 2011-2022 走看看