SpringBoot集成Redis,以及MybatisPlus分页、Mapper的使用(二)

概述

上节主要讲解SpringBoot项目框架搭建,这里不再赘述。内容建立在上节基础上,具体详情地址:http://blog.csdn.net/fjekin/article/details/78407153,本篇介绍MybatisPlus分页和Redis的使用。

分页测试(效果图)

apizza
笔者用的接口测试工具是谷歌的apizza,也是蛮强大的。减少文档编写工作量。

分页

排序规则,Order.java

package com.jekin.example.entity.page;

/**
 * 数据库排序
 *
 * 
 * @Date 2017年5月31日20:48:41
 */
public enum Order {

    ASC("asc"), DESC("desc");

    private String des;

    Order(String des) {
        this.des = des;
    }

    public String getDes() {
        return des;
    }

    public void setDes(String des) {
        this.des = des;
    }
}

分页结果封装,PageInfoBT.java

package com.jekin.example.entity.page;

import java.util.List;

import com.baomidou.mybatisplus.plugins.Page;

/**
 * 分页结果的封装
 * 
 * @author Jekin
 * @date 2017年10月31日
 */
public class PageInfoBT<T> {

    // 结果集
    private List<T> content;

    // 总数
    private long total;

    public PageInfoBT(Page<T> page) {
        this.content = page.getRecords();
        this.total = page.getTotal();
    }

    public List<T> getContent() {
        return content;
    }

    public void setContent(List<T> content) {
        this.content = content;
    }

    public long getTotal() {
        return total;
    }

    public void setTotal(long total) {
        this.total = total;
    }
}

接口请求默认分页配置,PageFactory.java

package com.jekin.example.factory;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang3.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import com.baomidou.mybatisplus.plugins.Page;
import com.jekin.example.entity.page.Order;

/**
 * 默认分页
 * 
 * @author Jekin
 * @date 2017年10月31日
 */
public class PageFactory<T> {
    public Page<T> defaultPage() {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        int size = 12;
        int current = 0;
        if (!StringUtils.isEmpty(request.getParameter("size"))) {
            size = Integer.valueOf(request.getParameter("size"));
            current = Integer.valueOf(request.getParameter("page"));
        } else {
            size = 60000;
            current = 0;
        }
        String sort = request.getParameter("sort");
        String order = request.getParameter("order");
        if (StringUtils.isEmpty(sort)) {
            Page<T> page = new Page<>(current, size);
            page.setOpenSort(false);
            return page;
        } else {
            Page<T> page = new Page<>(current, size, sort);
            if (Order.ASC.getDes().equals(order)) {
                page.setAsc(true);
            } else {
                page.setAsc(false);
            }
            return page;
        }
    }
}

使用例子,UserController.java

package com.jekin.example.controller;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.baomidou.mybatisplus.plugins.Page;
import com.jekin.example.entity.ResultInfo;
import com.jekin.example.entity.User;
import com.jekin.example.entity.page.PageInfoBT;
import com.jekin.example.factory.PageFactory;
import com.jekin.example.mapper.UserMapper;

/**
 * 分页测试
 * 
 * @author Jekin
 * @date 2017年10月31日
 */
@Controller
@RequestMapping(value = "/redis/user")
public class UserController {

    @Resource
    private UserMapper userMapper;

    @RequestMapping("/list")
    @ResponseBody
    public ResultInfo list(
    ) {
        Page<User> page = new PageFactory<User>().defaultPage();
        List<User> result = userMapper.getUserPage(page,
        page.getOrderByField(), page.isAsc());
        page.setRecords(result);
        ResultInfo resultInfo = new ResultInfo(0, "success");
        resultInfo.setData(new PageInfoBT<User>(page));
        return resultInfo;
    }

}

默认,分页参数可不传,ResultInfo是对结果集的包装。
Dao方法,UserMapper.java

List<User> getUserPage(@Param("page") Page<User> page,
        @Param("orderByField") String orderByField, @Param("isAsc") boolean isAsc);

映射文件,UserMapper.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 namespace="com.jekin.example.mapper.UserMapper">
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id,type,openid,avatar,account,password,salt,name,birthday,sex,email,phone,roleid,status,createtime,updatetime,balance
    </sql>

    <resultMap id="BaseResultMap" type="User">
        <id column="id" property="id" />
        <result column="type" property="type" />
        <result column="openid" property="openid" />
        <result column="avatar" property="avatar" />
        <result column="account" property="account" />
        <result column="password" property="password" />
        <result column="salt" property="salt" />
        <result column="name" property="name" />
        <result column="birthday" property="birthday" />
        <result column="sex" property="sex" />
        <result column="email" property="email" />
        <result column="phone" property="phone" />
        <result column="roleid" property="roleid" />
        <result column="status" property="status" />
        <result column="createtime" property="createtime" />
        <result column="updatetime" property="updatetime" />
        <result column="balance" property="balance" />
    </resultMap>

    <select id="getUserPage" resultType="User">
        select <include refid="Base_Column_List" /> from user where 1 = 1
        <choose>
            <when test="orderByField != null and orderByField !=''">
                <choose>
                    <when test="isAsc == true">
                        order by ${orderByField} ASC
                    </when>
                    <otherwise>
                        order by ${orderByField} DESC
                    </otherwise>
                </choose>
            </when>
            <otherwise>
                order by id DESC
            </otherwise>
        </choose>
    </select>

</mapper>

以上重点是PageFactory类,笔者在MP分页辅助类Page上又一次包装,通过HttpServletRequest获取接口参数做初始化工作。关于MP更多内容,可以查看官网地址,笔者建议直接查看源码,里面都有中文注释,比官网介绍的更详细。

Redis缓存

引入jar包,配置地址等参数&

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值