首页 > 编程语言 >[java学习] Spring的分页插件的使用

[java学习] Spring的分页插件的使用

时间:2023-06-24 20:14:35浏览次数:50  
标签:插件 java Spring param 查询 hprice productInfo Integer lprice

概述:SSM集成常会使用到分页,Spring中提供了方便实用的分页插件     第一步:在Mybatis配置文件(SqlMapConfig.xml)中配置插件组件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>

</configuration>

第二步:在实体类中设置价格区间(lprice,hprice)

 

//高价格
private Integer hprice;
//低价格
private Integer lprice;

public void setHprice(Integer hprice) {
    this.hprice = hprice;
}

public Integer getHprice() {
    return hprice;
}


public Integer getLprice() {
    return lprice;
}


public void setLprice(Integer lprice) {
    this.lprice = lprice;
}

第三步:在mapper层设置

 

《Interface》

List<ProductInfo> selectAllByCon(ProductInfo productInfo);
//根据类型查询商品信息(将价格区间等信息,已经封装到了productInfo对象中)


《xml文件--   加装组合查询》

<select id="selectAllByCon" parameterType="com.qiang.ssm.entity.ProductInfo"                 resultMap="BaseResultMapdemo1">
      select * from product_info <include refid="conn"></include>
</select>


<resultMap id="BaseResultMapdemo1" type="com.qiang.ssm.entity.ProductInfo" >
  <id column="p_id" property="pId" jdbcType="INTEGER" />
  <result column="p_name" property="pName" jdbcType="VARCHAR" />
  <result column="p_content" property="pContent" jdbcType="VARCHAR" />
  <result column="p_price" property="pPrice" jdbcType="INTEGER" />
  <result column="p_image" property="pImage" jdbcType="VARCHAR" />
  <result column="p_number" property="pNumber" jdbcType="INTEGER" />
  <result column="type_id" property="typeId" jdbcType="INTEGER" />
  <result column="p_date" property="pDate" jdbcType="DATE" />
</resultMap>

因为我的多条件组合查询 是有产品的名字,类型以及价格区间等信息

<sql id="conn">
  <where>
    1=1
    <if test="pName!=null and pName!=''">
      and p_name like '%${pName}%'
    </if>
    <if test="typeId!=null">
      and type_id=#{typeId}
    </if>
    <if test="pPrice!=null">
      and p_price between #{lprice} and #{hprice}
    </if>
    order by p_id desc
  </where>
</sql>

第四步:service层:

 

/**
* 分页查询和多条件组合查询
* @param pagenum 当前显示的页号
* @param pageSize 每页显示的项目数
* @param productInfo   产品对象
* @return
*/
@Override
public PageInfo<ProductInfo> selectAllByCondition(Integer pagenum, Integer pageSize,ProductInfo productInfo) {

    在调用sql查询前调用,告诉其查询的起始页和每页条数
    PageHelper.startPage(pagenum,pageSize);
    按条件查询
    List<ProductInfo> list=productInfoMapper.selectAllByCon(productInfo);
    //将按条件查询的数据封装到分页对象中
    PageInfo<ProductInfo> pageInfo=new PageInfo<>(list);
    return pageInfo;
}

第五步:controller 层:

 

/**
*controller的按条件查询和分页,在该层将前端传来的数据,封装并传给对象
* @param session
* @param pname
* @param typeid
* @param lprice
* @param hprice
* @param model
* @return
*/
@RequestMapping("mySplict")
public String mySplict(HttpSession session,String pname,Integer typeid,Integer lprice,Integer hprice,Model model){
   //从前端传来的数据封装一下
   ProductInfo productInfo=new ProductInfo();
   productInfo.setpName(pname);
   productInfo.setTypeId(typeid);
   productInfo.setLprice(lprice);
   productInfo.setHprice(hprice);

    //用于数据回显
   session.setAttribute("vo",productInfo);
    //调用service层的方法,获取到分页信息
   PageInfo<ProductInfo> pageInfo = productInfoService.selectAllByCondition(1, 5, productInfo);

输出测试一下
    System.out.println("**********"+pageInfo.getSize());

    //将结果放到前端页面中,前端页面便可以直接进行获取
    model.addAttribute("pb",pageInfo);
       return "product";
}

第六步:前端界面(辅助作用)

 

//在该部分进行填写
<div id="condition" style="text-align: center">
    <form id="myform" action="${pageContext.servletContext.contextPath}/prod/mySplict.action" method="post">
        商品名称:<input name="pname" id="pname" value="${sessionScope.vo.pName}">&nbsp;&nbsp;&nbsp;
        商品类型:<select name="typeid" id="typeid">
        <option value="-1">请选择</option>
        <c:forEach items="${sessionScope.ptlist}" var="pt">
            <option  value="${pt.typeId}" ${pt.typeId==sessionScope.vo.typeId ? "selected":""} >
                    ${pt.typeName}
            </option>
        </c:forEach>
    </select>&nbsp;&nbsp;&nbsp;
        价格:<input name="lprice" id="lprice" value="${sessionScope.vo.lprice}">-
        <input name="hprice" id="hprice" value="${sessionScope.vo.hprice}">
        <input type="submit" value="查询" />
    </form>
</div>

// 在该部分显示结果:

<div id="middle">
    <table class="table table-bordered table-striped">
        <tr>


            <th>商品名</th>
            <th>商品介绍</th>
            <th>定价(元)</th>
            <th>商品图片</th>
            <th>商品数量</th>


            <th>操作</th>
        </tr>


        <c:forEach items="${pb.list}" var="p">
            <tr>
                <td>${p.pName}</td>
                <td>${p.pContent}</td>
                <td>${p.pPrice}</td>
                <td><img width="55px" height="45px"
                         src="${pageContext.request.contextPath}/image_big/${p.pImage}"></td>
                <td>${p.pNumber}</td>



                <td>

</tr>
    </c:forEach>
</table>


<!--分页栏-->
<div id="bottom">
    <ul class="pagination">
        <li>
            <a href="#">[总共页${pb.pages}]/[当前${pb.pageNum}]</a>
        </li>
        <li>
            <a href="${pageContext.servletContext.contextPath}/prod/split.action?page=1">首页</a>
        </li>
        <li>
            <a href="${pageContext.servletContext.contextPath}/prod/split.action?page=${pb.prePage}">上一页</a>
        </li>
        <li>
            <a href="${pageContext.servletContext.contextPath}/prod/split.action?page=${pb.nextPage}">下一页</a>
        </li>
        <li>
            <a href="${pageContext.servletContext.contextPath}/prod/split.action?page=${pb.pages}">尾页</a>
        </li>

 

在以上代码中,除了第一步之外和最后一步,其余部分逆序进行会更直观。

 

 

 

 

 

 

 

标签:插件,java,Spring,param,查询,hprice,productInfo,Integer,lprice
From: https://www.cnblogs.com/qiang2023/p/17501609.html

相关文章

  • 什么是Spring AOP里的引入(Introduction)?
    在SpringAOP中,引入(Introduction)是一种特殊类型的通知,允许我们向现有的类添加新的接口和实现,而无需修改原始类的代码。引入提供了一种扩展现有类功能的方式,它允许我们在运行时为类动态地添加新的方法和属性。通过引入,我们可以将新的行为添加到现有的类中,而无需继承该类或修改其代......
  • Spring Cloud 总览表
    SpringCloud总览表微服务技术注册发现远程调用配置管理负载均衡网关路由流量控制系统保护熔断降级服务授权分布式事务TCC模型AT模型Seata缓存技术Redis数据结构SpringDataRedis缓存穿透、雪崩OpenResty多级缓存缓存数据同步Nginx本地缓存数据持......
  • Java 一维数组的使用
    Java一维数组的使用1.一维数组的定义在不知道数组内容可以直接使用下面的定义方法:int[]arr=newint[数组个数];或intarr[]=newint[数组个数];在知道数组内容可以使用如下:int[]arr={data1,data2,data.....};2.数组的传递数组的传递与其他基本类型的值传递不同,......
  • SpringCloud Alibaba入门3之nacos服务搭建
    我们继续在上一章的基础上学习。https://blog.51cto.com/u_13312531/6539601一、下载nacos-server从https://github.com/alibaba/nacos/releasesopeninnewwindow 下载nacos-server发行版。我们使用1.4.2版本二、启动nacos进入%path%\nacos\bin文件夹,执行cmd命令startup.cmd-m......
  • 10. Spring整合
    课程学习到这里,已经对Spring有一个简单的认识了,Spring有一个容器,叫做IoC容器,里面保存bean。在进行企业级开发的时候,其实除了将自己写的类让Spring管理之外,还有一部分重要的工作就是使用第三方的技术。前面已经讲了如何管理第三方bean了,下面结合IoC和DI,整合2个常用......
  • 55基于java的在线零食超市系统设计与实现
    本章节给大家带来一个基于java在线零食超市系统设计与实现,可适用于零食小吃,在线零食小吃超市,线上超市,线上零食商城,美食商城,美食超市,校园超市,零食资讯等等。引言随着社会的快速发展,计算机的影响是全面且深入的。人们生活水平的不断提高,日常生活中人们对交易平台方面的要求也在......
  • SMU Spring 2023 Contest Round 6
    E.ExpenditureReduction从左右往右找到包含B字符的最近位置,然后从这个位置有从右到左找回去找到包含完所有B字符的位置,这个区间就是答案#include<bits/stdc++.h>#defineinf0x3f3f3f3f#defineendl'\n'#defineintlonglongusingnamespacestd;constintN=......
  • ElasticSearch-02-软件安装:ES、Header插件、Kibana
    需要安装的软件:●安装Java环境●安装Elasticsearch●安装Kibana●安装Elasticsearch-Head插件ES中文社区下载安装包快https://elasticsearch.cn/download/本文基于版本elasticsearch-7.10.1-windows-x86_64一、ES单机安装(Linux)Linux安装有点麻烦1.1环境安装Elas......
  • JAVA编程开发之 新蜂商城 --- 简介
    开源商城学习项目https://github.com/newbee-ltd/newbee-mallhttps://gitee.com/newbee-ltd/newbee-mallhttps://edu.csdn.net/course/detail/26258https://juejin.cn/book/6844733814074245133?suid=3808363978174302&source=pc新蜂商城虽然不能作为真实企业级项目,但是是优......
  • Spring接口简单使用
    Spring接口简单使用ApplicationContextAwareApplicationContextAware是一个Spring接口,用于在Spring应用程序中获取ApplicationContext对象。ApplicationContext是Spring框架对Bean的管理容器,它负责加载、配置和管理应用程序中的Bean。使用ApplicationContextAwar......