如何玩转MyBatis分页查询

目录

 1、工具类

2、domain

 3、mapper

xml

4、service

 impl

5、controller

 6、测试


需求:

 

 1、工具类

/**
 * 表格分页数据对象
 *
 * @author Lion Li
 */

@Data
@NoArgsConstructor
public class TableDataInfo<T> implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 总记录数
     */
    private long total;

    /**
     * 列表数据
     */
    private List<T> rows;

    /**
     * 消息状态码
     */
    private int code;

    /**
     * 消息内容
     */
    private String msg;

    /**
     * 分页
     *
     * @param list  列表数据
     * @param total 总记录数
     */
    public TableDataInfo(List<T> list, long total) {
        this.rows = list;
        this.total = total;
    }

    public static <T> TableDataInfo<T> build(IPage<T> page) {
        TableDataInfo<T> rspData = new TableDataInfo<>();
        rspData.setCode(HttpStatus.HTTP_OK);
        rspData.setMsg("查询成功");
        rspData.setRows(page.getRecords());
        rspData.setTotal(page.getTotal());
        return rspData;
    }

    public static <T> TableDataInfo<T> build(List<T> list) {
        TableDataInfo<T> rspData = new TableDataInfo<>();
        rspData.setCode(HttpStatus.HTTP_OK);
        rspData.setMsg("查询成功");
        rspData.setRows(list);
        rspData.setTotal(list.size());
        return rspData;
    }

    public static <T> TableDataInfo<T> build() {
        TableDataInfo<T> rspData = new TableDataInfo<>();
        rspData.setCode(HttpStatus.HTTP_OK);
        rspData.setMsg("查询成功");
        return rspData;
    }

}
public class PagingUtils {

    public static Integer pagingHandle(Integer pageNum,Integer pageSize){
        if (pageNum != null && pageSize != null) {
            pageNum = (pageNum-1) * pageSize;
        }
        return pageNum;
    }

2、domain

@Data
public class ZjTenderer implements Serializable,Cloneable{
    /** 联系人*/
    @TableField(exist = false)
    private List<ZjTendererContacter> contacterList;

    private Integer pageNum;
    private Integer pageSize;
    /** 招标人ID */
    private Integer tendererId ;
    /** 招标人名字 */
    private String userName ;
    /** 区域 */
    private String location ;
    /** 单位性质;政府主管部门、国有企业、政府平台公司、私有企业、事业单位、社会团体 */
    private String unitProperty ;
    /** 税号 */
    private String dutyNumber ;
    /** 单位地址 */
    private String address ;
    /** 手机号 */
    private String phoneNumber ;
    /** 开户银行 */
    private String depositBank ;
    /** 银行账号 */
    private String bankNumber ;
    /** 数据状态 */
    private String dataStatus ;
    /** 流程processId */
    private String taskId ;
    /** 创建人 */
    private String createBy ;
    /** 创建时间 */
    private Date createTime ;
    /** 更新人 */
    private String updateBy ;
    /** 更新时间 */
    private Date updateTime ;

}
@Data
public class ZjTendererContacter implements Serializable,Cloneable{
    /** 联系人ID */
    private Integer contacterId ;
    /** 联系人名字 */
    private String userName ;
    /** 电话号码 */
    private String phoneNumber ;
    /** 职务 */
    private String job ;
    /** 招标人ID */
    private Integer tendererId ;
    /** 数据状态 */
    private String dataStatus ;
    /** 流程processId */
    private String taskId ;
    /** 创建人 */
    private String createBy ;
    /** 创建时间 */
    private Date createTime ;
    /** 更新人 */
    private String updateBy ;
    /** 更新时间 */
    private Date updateTime ;

@Data
@TableName("zj_tenderer")
public class ZjTendererDTO implements Serializable,Cloneable {
    /** 联系人*/
    @TableField(exist = false)
    private List<ZjTendererContacterDTO> contacterList;
    /**
     * 招标人ID
     */
    @TableId
    private Integer tendererId;
    /**
     * 创建人
     */
    private String createBy;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 更新人
     */
    private String updateBy;
    /**
     * 更新时间
     */
    private Date updateTime;
    /**
     * 数据状态
     */
    private String dataStatus;
    /**
     * 流程processId
     */
    private String taskId;
    /**
     * 招标人名字
     */
    private String userName;
    /**
     * 区域
     */
    private String location;
    /**
     * 单位性质;政府主管部门、国有企业、政府平台公司、私有企业、事业单位、社会团体
     */
    private String unitProperty;
    /**
     * 税号
     */
    private String dutyNumber;
    /**
     * 单位地址
     */
    private String address;
    /**
     * 手机号
     */
    private String phoneNumber;
    /**
     * 开户银行
     */
    private String depositBank;
    /**
     * 银行账号
     */
    private String bankNumber;

    @Override
    public ZjTendererDTO clone() {
        try {
            ZjTendererDTO clone = (ZjTendererDTO) super.clone();
            // TODO: copy mutable state here, so the clone can't change the internals of the original
            return clone;
        } catch (CloneNotSupportedException e) {
            throw new AssertionError();
        }
    }

 3、mapper

public interface ZjTenderMapper{

    List<ZjTenderer>  queryAllByLimit(ZjTenderer zjTenderer);

    int count(ZjTenderer zjTenderer);
}

public interface ZjTenderContacterMapper {
    List<ZjTendererContacter> queryAllByLimits(Integer tendererId);
}

xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 定义mapper接口路径 -->
<mapper namespace="com.hyxckj.web.controller.hyxckj.mapper.tender.ZjTenderContacterMapper">
    <!--id的值保证Mapper接口的方法名一值-->
    <resultMap type="com.hyxckj.web.controller.hyxckj.domain.tender.vo.ZjTendererContacter" id="ZjTendererContacterMap">
        <result property="contacterId" column="contacter_id"/>
        <result property="userName" column="user_name"/>
        <result property="phoneNumber" column="phone_number"/>
        <result property="job" column="job"/>
        <result property="tendererId" column="tenderer_id"/>
        <result property="dataStatus" column="DATA_STATUS"/>
        <result property="taskId" column="TASK_ID"/>
        <result property="createBy" column="CREATE_BY"/>
        <result property="createTime" column="CREATE_TIME"/>
        <result property="updateBy" column="UPDATE_BY"/>
        <result property="updateTime" column="UPDATE_TIME"/>
    </resultMap>

    <!--分页查询指定行数据-->
    <select id="queryAllByLimits" resultMap="ZjTendererContacterMap">
        select
        contacter_id,user_name,phone_number,job,tenderer_id,DATA_STATUS,TASK_ID,CREATE_BY,CREATE_TIME,UPDATE_BY,UPDATE_TIME
        from zj_tenderer_contacter where tenderer_id = #{tendererId}
<!--        <where>-->
<!--            <if test="contacterId != null and contacterId != ''">-->
<!--                and contacter_id = #{contacterId}-->
<!--            </if>-->
<!--            <if test="userName != null and userName != ''">-->
<!--                and user_name = #{userName}-->
<!--            </if>-->
<!--            <if test="phoneNumber != null and phoneNumber != ''">-->
<!--                and phone_number = #{phoneNumber}-->
<!--            </if>-->
<!--            <if test="job != null and job != ''">-->
<!--                and job = #{job}-->
<!--            </if>-->
<!--            <if test="tendererId != null and tendererId != ''">-->
<!--                and tenderer_id = #{tendererId}-->
<!--            </if>-->
<!--            <if test="dataStatus != null and dataStatus != ''">-->
<!--                and DATA_STATUS = #{dataStatus}-->
<!--            </if>-->
<!--            <if test="taskId != null and taskId != ''">-->
<!--                and TASK_ID = #{taskId}-->
<!--            </if>-->
<!--            <if test="createBy != null and createBy != ''">-->
<!--                and CREATE_BY = #{createBy}-->
<!--            </if>-->
<!--            <if test="createTime != null and createTime != ''">-->
<!--                and CREATE_TIME = #{createTime}-->
<!--            </if>-->
<!--            <if test="updateBy != null and updateBy != ''">-->
<!--                and UPDATE_BY = #{updateBy}-->
<!--            </if>-->
<!--            <if test="updateTime != null and updateTime != ''">-->
<!--                and UPDATE_TIME = #{updateTime}-->
<!--            </if>-->
<!--        </where>-->
    </select>

</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 定义mapper接口路径 -->
<mapper namespace="com.hyxckj.web.controller.hyxckj.mapper.tender.ZjTenderContacterMapper">
    <!--id的值保证Mapper接口的方法名一值-->
    <resultMap type="com.hyxckj.web.controller.hyxckj.domain.tender.vo.ZjTendererContacter" id="ZjTendererContacterMap">
        <result property="contacterId" column="contacter_id"/>
        <result property="userName" column="user_name"/>
        <result property="phoneNumber" column="phone_number"/>
        <result property="job" column="job"/>
        <result property="tendererId" column="tenderer_id"/>
        <result property="dataStatus" column="DATA_STATUS"/>
        <result property="taskId" column="TASK_ID"/>
        <result property="createBy" column="CREATE_BY"/>
        <result property="createTime" column="CREATE_TIME"/>
        <result property="updateBy" column="UPDATE_BY"/>
        <result property="updateTime" column="UPDATE_TIME"/>
    </resultMap>

 
    <select id="queryAllByLimits" resultMap="ZjTendererContacterMap">
        select
        contacter_id,user_name,phone_number,job,tenderer_id,DATA_STATUS,TASK_ID,CREATE_BY,CREATE_TIME,UPDATE_BY,UPDATE_TIME
        from zj_tenderer_contacter where tenderer_id = #{tendererId}
    </select>

</mapper>


4、service

TableDataInfo<ZjTendererDTO> getLists(ZjTenderer zjTenderer);

 impl

   @Override
    public TableDataInfo<ZjTendererDTO> getLists(ZjTenderer zjTenderer) {
        zjTenderer.setPageSize(PagingUtils.pagingHandle(zjTenderer.getPageSize(),zjTenderer.getPageNum()
        ));
        List<ZjTenderer> list = zjTenderMapper.queryAllByLimit(zjTenderer);
        list.forEach(zjTendererDTO->{
             List<ZjTendererContacter> zjTendererContacte = tenderContacterMapper.queryAllByLimits(zjTendererDTO.getTendererId());
            zjTendererDTO.setContacterList(zjTendererContacte);
        });
        int total = zjTenderMapper.count(zjTenderer);
        TableDataInfo dataInfo = new TableDataInfo();
        dataInfo.setTotal(total);
        dataInfo.setRows(list);
        return dataInfo;
    }

5、controller

 @PostMapping("/lists")
    public TableDataInfo<ZjTendererDTO> getLists(ZjTenderer zjTenderer){
        return zjTenderService.getLists(zjTenderer);
    }

 6、测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值