springboot+mybatis+pageHelper

你说的曾经没有我的故事 提交于 2020-01-10 07:31:31

1.概念:PageHelper 是一款好用的开源免费的 Mybatis 第三方物理分页插件,可以支持多个数据库,应用mybatis

2.引入依赖:

<!-- 这个pagehelper好像适用于spring,对springboot不适用,给个提醒--><!--<dependency>-->    <!--<groupId>com.github.pagehelper</groupId>-->    <!--<artifactId>pagehelper</artifactId>-->    <!--<version>5.0.3</version>--><!--</dependency>--><!--分页插件--><dependency>    <groupId>com.github.pagehelper</groupId>    <artifactId>pagehelper-spring-boot-starter</artifactId>    <version>1.2.3</version></dependency>3.application.yml
server:  port: 8088spring:  datasource:    driver-class-name: com.mysql.jdbc.Driver    url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true    username: root    password: zhangmybatis:  mapper-locations: classpath:mapper/*.xml  type-aliases-package: com.yiyezhiqiu.jwt.jwt.domain  configuration:    map-underscore-to-camel-case: truelogging:  level:    com:      yiyezhiqiu:        jwt:          jwt:           dao: debug4.数据库表:

 

5.domain层

  5.1.Goods实体类

package com.yiyezhiqiu.jwt.jwt.domain;import lombok.Data;import java.math.BigDecimal;@Datapublic class Goods {    private int id;    private  String goodsType;    private BigDecimal goodsPrice;    private Double     goodsWeight;    private String goodsShape;}  5.2 分页传入参数实体类  
package com.yiyezhiqiu.jwt.jwt.domain;import lombok.Data;/** * 分页实体类 */@Datapublic class PageHelpParam {    /**     * 当前页     */    private String currentPageParam ;    /**     * 当前页条数     */    private String pageSizeParam;    /**     * 模糊查询参数fuzzy     */    private String fuzzy;    /**     * 模糊查询参数 nextFuzzy     */    private String nextFuzzy;}
6.service层  6.1 接口:IGoodsService  
package com.yiyezhiqiu.jwt.jwt.service;import com.yiyezhiqiu.jwt.jwt.domain.PageHelpParam;import java.util.List;import java.util.Map;public interface IGoodsService {    public Map findPageHelp(PageHelpParam pageHelpParam);}

  6.2.实现类:GoodsServiceImpl

package com.yiyezhiqiu.jwt.jwt.service.impl;import com.github.pagehelper.PageHelper;import com.github.pagehelper.PageInfo;import com.yiyezhiqiu.jwt.jwt.dao.GoodsDao;import com.yiyezhiqiu.jwt.jwt.domain.Goods;import com.yiyezhiqiu.jwt.jwt.domain.PageHelpParam;import com.yiyezhiqiu.jwt.jwt.service.IGoodsService;import com.yiyezhiqiu.jwt.jwt.service.IUsersService;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.util.CollectionUtils;import org.springframework.util.StringUtils;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * 实现分页 */@Service@Slf4jpublic class GoodsServiceImpl implements IGoodsService {    @Autowired    IGoodsService goodsService;    @Autowired    GoodsDao goodsDao;    @Override    public Map findPageHelp(PageHelpParam pageHelpParam) {        String currentPageParam = pageHelpParam.getCurrentPageParam();        String pageSizeParam   =  pageHelpParam.getPageSizeParam();        log.info("currentPageParam:"+currentPageParam);        log.info("pageSizeParam:"+pageSizeParam);        int currenPage = 1;        int pageSize = 10;        if(StringUtils.isEmpty(currentPageParam)){         currenPage = 1;        }else{            currenPage = Integer.parseInt(currentPageParam);        }        if(StringUtils.isEmpty(pageSizeParam)){            pageSize = 10;        }else{            pageSize = Integer.parseInt(pageSizeParam);        }        //分页条件查询参数        PageHelper.startPage(currenPage,pageSize);//页数和每页大小        /**         * 获得要分页的集合,         *    1.这里获得集合,如果你要给参数到数据库,比如模糊查询,就可以在PageHelpParam中添加相关字段(在实现了分页后,做了下模糊查询)         *   2.这里是返回某个表的实体类,当然你也可以用一个vo类,也就是不同表字段返回在一个vo类中使用         */        String fuzzy = pageHelpParam.getFuzzy();        String nextFuzzy = pageHelpParam.getNextFuzzy();        Map<String,Object>  mapParam = new HashMap<>();        if(null != fuzzy && fuzzy  != ""){            mapParam.put("fuzzy",fuzzy);        }        if(null != nextFuzzy && fuzzy != ""){            mapParam.put("nextFuzzy",nextFuzzy);        }        List<Goods> goodsList = goodsDao.findAll(mapParam);        //这里可以看下PageInfo为啥会和PageHelper有关系,因为startPage会返回page,PageInfo中使用page,这就是联系,可以去看源码        PageInfo<Goods> pageInfo = new PageInfo<Goods>(goodsList);        List<Goods> goods = new ArrayList<>();        if(!CollectionUtils.isEmpty(goodsList)){            for(Goods good:pageInfo.getList()){                goods.add(good);            }        }        Map<String,Object>  map = new HashMap<>();        map.put("total",pageInfo.getTotal());        map.put("currentPage",pageInfo.getPageNum());        map.put("pageSize", pageInfo.getPageSize());        Map<String ,Object> maps = new HashMap<>();        maps.put("pageInfo",map);        maps.put("goods",goods);        return maps;    }}

 7.controller

package com.yiyezhiqiu.jwt.jwt.controller;import com.github.pagehelper.PageHelper;import com.yiyezhiqiu.jwt.jwt.annotation.OtherPermit;import com.yiyezhiqiu.jwt.jwt.domain.PageHelpParam;import com.yiyezhiqiu.jwt.jwt.service.IGoodsService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import java.util.Map;@RestController@RequestMapping("/goods")public class GoodsController {    @Autowired    IGoodsService goodsService;    @RequestMapping(value = "/findGoods",method = RequestMethod.GET)    public Map   findGoodsPageHelper(PageHelpParam pageHelpParam){        Map<String,Object> map = goodsService.findPageHelp(pageHelpParam);        return map;    }}8.GoodsMapping.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.yiyezhiqiu.jwt.jwt.dao.GoodsDao"><!--这里    IFNULL(A,B) 意思是如果A不为空,则为A,否则为B    CONCAT(多个IFNULL)实现一个框就可以分别对多个字段进行模糊查询-->    <select id="findAll"  resultType="com.yiyezhiqiu.jwt.jwt.domain.Goods">        select * from goods        <where>            <if test= "fuzzy != null">                IFNULL(goods_type ," ") like  "%"#{fuzzy}"%"            </if>            <if test="nextFuzzy != null">            and CONCAT(IFNULL(goods_price," "),IFNULL(goods_shape," ")) like  "%"#{nextFuzzy}"%"            </if>        </where>    </select>    </mapper>
9.postman测试: 9.1:    当只为分页时,不模糊筛选

 


     9.2:

        当为输入goods_type单个参数筛选时

 

 

     9.3 :

      当可以是goods_weight 或者goods_shape筛选时

 


 

 

 

 

github地址:https://github.com/yiyeluowuchen/springboot-jwt-token.git

 

 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!