最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java ssm框架實(shí)現(xiàn)分頁(yè)功能的示例代碼(oracle)

 更新時(shí)間:2018年03月19日 10:45:21   作者:筱月  
這篇文章主要介紹了java ssm框架實(shí)現(xiàn)分頁(yè)功能的示例代碼(oracle),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

java web 實(shí)現(xiàn)分頁(yè)功能,分享給大家,具體如下:

使用框架:ssm

數(shù)據(jù)庫(kù):oracle

話說(shuō) oracle 的分頁(yè)查詢比 mysql 復(fù)雜多了,在這里簡(jiǎn)單談一下:

查詢 前十條數(shù)據(jù):

SELECT * FROM(
 SELECT ROWNUM WN,RN.* FROM (
  SELECT
   id,
   title,
   create_time as createTime,
   musictor,
   musictitle
  FROM
   krry_blog
  ORDER BY create_time desc
  )RN
 )WN
WHERE WN <= 10 AND WN > 0

語(yǔ)法較為復(fù)雜,

同樣的結(jié)果,mysql 的語(yǔ)法是:用一個(gè) LIMIT 就可以解決。

SELECT
 id,
 title,
 create_time as createTime,
 musictor,
 musictitle
FROM
 krry_blog
 ORDER BY create_time desc
LIMIT 0,5

 SSM 框架的搭建,就不多說(shuō)了,以前的博客有詳細(xì)介紹,這里就談?wù)剬?shí)現(xiàn) java web 分頁(yè)的功能。

用到插件 js : krry_page.js,還有jQuery

mapper 持久層:

BlogMapper.java

package com.krry.mapper;
import java.util.HashMap;
import java.util.List;
import com.krry.entity.Params;

/**
 * 
 * Mapper:操作數(shù)據(jù)庫(kù)
 * @author krry
 * @version 1.0.0
 *
 */
public interface BlogMapper {

 /**
 * 查詢所有博客
 * @param params
 * @return
 */
 public List<HashMap<String, Object>> findBlogs(Params params);
 
 /**
 * 計(jì)算博客數(shù)量
 * com.krry.dao.admin 
 * 方法名:countBlogs
 * @author krry 
 * @param params
 * @return int
 * @exception 
 * @since 1.0.0
 */
 public long countBlogs(); 
}

BlogMapper.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.krry.mapper.BlogMapper" > 
 <!-- 分頁(yè)查詢所有的博客信息 -->
 <select id="findBlogs" resultType="java.util.HashMap" parameterType="Params">
 SELECT * FROM(
  SELECT ROWNUM WN,RN.* FROM (
  SELECT
   id,
   title,
   create_time as createTime,
   musictor,
   musictitle
  FROM
   krry_blog
  ORDER BY create_time desc
  )RN
 )WN
 WHERE WN &lt;= #{pageSize} AND WN &gt; #{pageNo}
 </select>
 
 <!-- 查詢博客數(shù)量 -->
 <select id="countBlogs" resultType="long">
 SELECT
  count(*)
 FROM
  krry_blog
 </select> 
</mapper>

service業(yè)務(wù)層:

接口類:IBlogService.java

package com.krry.service;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.ibatis.annotations.Param;
import com.krry.entity.Blog;
import com.krry.entity.Params;
/**
 * service層:處理業(yè)務(wù)邏輯(impl里面實(shí)現(xiàn))
 * @author asusaad
 *
 */
public interface IBlogService { 
 /**
 * 分頁(yè)查詢所有博客
 * @param params
 * @return
 */
 public List<HashMap<String, Object>> findBlogs(Params params);
 
 /**
 * 計(jì)算博客數(shù)量
 * @param params
 * @return
 */
 public long countBlogs(); 
}

impl 實(shí)現(xiàn)類:BlogService.java

package com.krry.service.impl;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.ModelAndView;
import com.krry.entity.Params;
import com.krry.mapper.BlogMapper;
import com.krry.service.IBlogService;
/**
 * 實(shí)現(xiàn)service層接口
 * @author asusaad
 *
 */
@Service
public class BlogService implements IBlogService{
 @Autowired
 private BlogMapper blogMapper;
 
 /**
 * 查詢博客
 */
 public List<HashMap<String, Object>> findBlogs(Params params) {
 
 //查詢博客信息
 List<HashMap<String, Object>> blog = blogMapper.findBlogs(params);
 
 
 return blog;
 }
 
 /**
 * 計(jì)算博客數(shù)量
 * @param params
 * @return
 */
 public long countBlogs(){
  long coutBlogs = blogMapper.countBlogs(); 
 return coutBlogs;
 } 
}

controller控制層:

KrryController.java

package com.krry.controller;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.krry.entity.Params;
import com.krry.service.IBlogService;
/**
 * KrryController
 * controller層,作為請(qǐng)求轉(zhuǎn)發(fā)
 * @author asusaad
 *
 */
@Controller //表示是多例模式,每個(gè)用戶返回的web層是不一樣的
public class KrryController { 
 @Autowired
 private IBlogService blogService;
 
 /**
 * 首頁(yè),并且分頁(yè)查詢
 * @return
 */
 @RequestMapping("/index")
 public ModelAndView index(Params params){ 
 params.setPageNo(0);
 params.setPageSize(10); //一開始只查詢10條 
 //調(diào)用業(yè)務(wù)層
 List<HashMap<String, Object>> blogs = blogService.findBlogs(params);
 //查詢博客數(shù)量
 long coutBlogs = blogService.countBlogs(); 
 ModelAndView modelAndView = new ModelAndView();
 modelAndView.addObject("blogs", blogs);
 modelAndView.addObject("coutBlogs", coutBlogs);
 modelAndView.setViewName("index"); 
 return modelAndView;
 }
 
 /**
 * ajax請(qǐng)求 的 分頁(yè)查詢
 * @param params
 * @return
 */
 @ResponseBody
 @RequestMapping("/loadData")
 public HashMap<String, Object> loadData(Params params){
 
 HashMap<String, Object> map = new HashMap<String, Object>();
 List<HashMap<String, Object>> blogs = blogService.findBlogs(params);
 map.put("blogs", blogs); 
 return map;
 } 
}

這里要有兩個(gè)實(shí)體類,作為數(shù)據(jù)庫(kù)查詢的注入 Blog,還有分頁(yè)查詢的兩個(gè)參數(shù) Params:

設(shè)置data參數(shù):pageNo(下一頁(yè)):就是當(dāng)前頁(yè)數(shù) * 下一頁(yè)要顯示的數(shù)量
         pageSize(下一頁(yè)):已經(jīng)查詢出來(lái)的數(shù)量(pageNo) + 每頁(yè)要顯示的數(shù)量

在數(shù)據(jù)庫(kù)中是 WN <= pageSize and WN > pageNo 來(lái)查詢分頁(yè)數(shù)據(jù)

Blog.java

package com.krry.entity;
/**
 * 
 * User
 * @author krry
 * @version 1.0.0
 *
 */
public class Blog {
 // 主鍵
 private String id;
 //博客標(biāo)題
 private String title;
 //音樂(lè)作者
 private String musictor;
 //音樂(lè)標(biāo)題
 private String musictitle;
 //創(chuàng)建時(shí)間
 private String createTime; 
 public Blog(String id, String title, String musictor, String musictitle,
  String createTime) {
 this.id = id;
 this.title = title;
 this.musictor = musictor;
 this.musictitle = musictitle;
 this.createTime = createTime;
 }

 public String getId() {
 return id;
 }

 public void setId(String id) {
 this.id = id;
 }

 public String getTitle() {
 return title;
 }

 public void setTitle(String title) {
 this.title = title;
 }

 public String getMusictor() {
 return musictor;
 }

 public void setMusictor(String musictor) {
 this.musictor = musictor;
 }

 public String getMusictitle() {
 return musictitle;
 }

 public void setMusictitle(String musictitle) {
 this.musictitle = musictitle;
 }

 public String getCreateTime() {
 return createTime;
 }

 public void setCreateTime(String createTime) {
 this.createTime = createTime;
 } 
}

Params.java

package com.krry.entity;
/**
 * 
 * Params
 * @author krry
 * @version 1.0.0
 *
 */
public class Params {
 private Integer pageSize = 0;
 private Integer pageNo = 0;
 
 public Integer getPageNo() {
  return pageNo;
 }

 public void setPageNo(Integer pageNo) {
  this.pageNo = pageNo;
 }
 
 public Integer getPageSize() {
  return pageSize;
 }

 public void setPageSize(Integer pageSize) {
  this.pageSize = pageSize;
 }
}

web 頁(yè)面 index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
pageContext.setAttribute("basePath", basePath);
%>

<!DOCTYPE HTML>
<html>
 <head>
 <title>分頁(yè)</title>
 <style>
  body{background:url("resource/images/78788.jpg");background-size:cover;}
  .titless{font-size: 34px;text-align: center;color: black;margin-bottom: 16px;}
  .ke_tabbox{min-height:556px;width:900px;background:#f9f9f9;margin:20px auto 0;padding:6px;position:relative;}
   .ke_tabbox .sendMy{text-align: center;
     font-family: "微軟雅黑";
     font-size: 28px;
     -webkit-text-fill-color: transparent;
     background: -webkit-gradient(linear,left top,left bottom,from(#FD8700),to(#FF00B1));
     -webkit-background-clip: text;
     margin:8px auto 0;line-height: 35px;}
   .ke_tabbox .ke_table{width:100%;margin-top: 26px;}
   .ke_tabbox th{background:#ccc;font-weight:bold;}
   .ke_tabbox .ke_table td,th{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;border:1px solid #fff;padding:4px 12px;color:#666;font-size:12px;}
   /*分頁(yè)相關(guān)*/
   .tzPage{font-size: 12px;position: absolute;top: 480px;right: 0px;}
   
   #tbody tr:hover{background:#eaeaea;}
   #tbody .t_mode{padding-right:4px;}
   #tbody .t_avbiaoq:hover{color:#FF6857;transition:.4s}
   #tbody .t_dele{padding-left:4px;}
 
   .tzPage a{text-decoration:none;border:none;color:#7d7d7d;background-color:#f2f2f2;border-radius: 3px;}
   .tzPage a:hover{background:#dd5862;color:#FFF;}
   .tzPage a,.tzPage span{display:block;float:left;padding:0em 0.5em;margin-right:5px;margin-bottom:5px;min-width:1em;text-align:center;line-height: 22px;height: 22px;}
   .tzPage .current{background:#dd5862;color:#FFF;border:none;border-radius: 3px;}
   .tzPage .current.prev,.tzPage .current.next{color:#999;border:1px solid #e5e5e5;background:#fff;}
   .tm_psize_go{margin-right:4px;float:left;height:24px;line-height:33px;position:relative;border:1px solid #e5e5e5;color:#999}
   #tm_pagego{border-radius:3px;height:18px;width:30px;float:left;text-align:center;border:1px solid #e5e5e5;line-height: 22px;color:#999}
   .sortdesc{border-top:5px solid;width:0px;height:0px;display:inline-block;vertical-align:middle;border-right:5px solid transparent;border-left:5px solid transparent;margin-left:5px;}
   .sortasc{border-bottom:5px solid;width:0px;height:0px;display:inline-block;vertical-align:middle;border-right:5px solid transparent;border-left:5px solid transparent;margin-left:5px;}
   .red{color:red} 
   .green{color:green}
   
   .hideAdd{height: 300px;
     text-align: center;
     line-height: 300px;
     margin-top: 16px;display:none;}
   .hideAdd a{font-size:28px;-webkit-text-fill-color:transparent;background: -webkit-gradient(linear,left top,left bottom,from(#FD0051),to(#A22C93));-webkit-background-clip: text;}
 </style>
 </head>
 
 <body>
  <div class="ke_tabbox">
   <p class="titless">分頁(yè)展示</p>
  <table class="ke_table">
   <thead>
    <tr>
     <th style="width:25%">標(biāo)題</th>
     <th style="width:25%">音樂(lè)人</th>
     <th style="width:30%">音樂(lè)標(biāo)題</th>
     <th style="width:20%">發(fā)布時(shí)間</th>
    </tr>
   </thead>
   
   <tbody id="tbody" data-itemcount="${coutBlogs}">
    <c:forEach var="blog" items="${blogs}">
     <tr>
      <td><a class="t_avbiaoq" title="${blog.TITLE}">${blog.TITLE}</a></td>
      <td><a class="t_avbiaoq" title="${blog.MUSICTOR}">${blog.MUSICTOR}</a></td>
      <td><a class="t_avbiaoq" title="${blog.MUSICTITLE}">${blog.MUSICTITLE}</a></td>
      <td>${blog.CREATETIME}</td>
     </tr>
    </c:forEach>
   </tbody>
  </table>
  <div id="krryPage"></div>
 </div>
 <script type="text/javascript" src="${basePath}/resource/js/jquery-1.11.3.min.js"></script>
 <script type="text/javascript" src="${basePath}/resource/js/krry_page.js"></script>
 <script type="text/javascript">var basePath = "${basePath}";</script>
 <script type="text/javascript">
  
  var krryAdminBlog = {
   initPage:function(itemCount){
    $("#krryPage").tzPage(itemCount, {
     num_display_entries : 5, //主體頁(yè)數(shù)
     num_edge_entries : 4,//邊緣頁(yè)數(shù)
     current_page : 0,//指明選中頁(yè)碼
     items_per_page : 10, //每頁(yè)顯示多少條
     prev_text : "上一頁(yè)",
     next_text : "下一頁(yè)",
     showGo:true,//顯示
     showSelect:false,
     callback : function(pageNo, psize) {//會(huì)回傳兩個(gè)參數(shù),第一個(gè)是當(dāng)前頁(yè)數(shù),第二個(gè)是每頁(yè)要顯示的數(shù)量
      krryAdminBlog.loadData(pageNo,psize);
     }
    });
   },
   //設(shè)置data參數(shù):pageNo(下一頁(yè)):就是當(dāng)前頁(yè)數(shù) * 下一頁(yè)要顯示的數(shù)量
   //   pageSize(下一頁(yè)):已經(jīng)查詢出來(lái)的數(shù)量(pageNo) + 每頁(yè)要顯示的數(shù)量
   //在數(shù)據(jù)庫(kù)中是 WN <= pageSize and WN > pageNo 來(lái)查詢分頁(yè)數(shù)據(jù)
   loadData:function(pageNo,pageSize){
    pageNo = pageNo * pageSize;
    pageSize = pageNo + 10;
    $.ajax({
     type:"post",
     url:basePath+"/loadData",
     data:{pageNo:pageNo,pageSize:pageSize},
     success:function(data){
      if(data){
       var html = "";
       var blogArr = data.blogs;
       for(var i=0,len=blogArr.length;i < len;i++){
        var json = blogArr[i];
        html+= "<tr>"+
        " <td><a class='t_avbiaoq' title='"+json.TITLE+"'>"+json.TITLE+"</a></td>"+
        " <td><a class='t_avbiaoq' title='"+json.NAME+"'>"+json.MUSICTOR+"</a></td>"+
        " <td><a class='t_avbiaoq' title='"+json.MUSICTITLE+"'>"+json.MUSICTITLE+"</a></td>"+
        " <td>"+json.CREATETIME+"</td>"+
        "</tr>";
       }
       $("#tbody").html(html);
      }
     }
    });
   }
  };
  
  krryAdminBlog.initPage($("#tbody").data("itemcount"));
  
 </script>
 </body>
</html>

分頁(yè)效果圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Boot修改內(nèi)置Tomcat默認(rèn)端口號(hào)的示例

    Spring Boot修改內(nèi)置Tomcat默認(rèn)端口號(hào)的示例

    本篇文章主要介紹了Spring Boot修改內(nèi)置Tomcat端口號(hào)的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Spring Boot超詳細(xì)分析啟動(dòng)流程

    Spring Boot超詳細(xì)分析啟動(dòng)流程

    SpringBoot是Spring開源組織下的子項(xiàng)目,是Spring組件一站式解決方案,主要是簡(jiǎn)化了使用Spring的難度,簡(jiǎn)省了繁重的配置,提供了各種啟動(dòng)器,開發(fā)者能快速上手,這篇文章主要給大家介紹了關(guān)于Spring Boot啟動(dòng)流程知識(shí)點(diǎn)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • java 實(shí)現(xiàn)迷宮回溯算法示例詳解

    java 實(shí)現(xiàn)迷宮回溯算法示例詳解

    這篇文章主要介紹了java 實(shí)現(xiàn)迷宮回溯算法示例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • SpringBoot中定時(shí)任務(wù)@Scheduled注解的使用解讀

    SpringBoot中定時(shí)任務(wù)@Scheduled注解的使用解讀

    這篇文章主要介紹了SpringBoot中定時(shí)任務(wù)@Scheduled注解的使用解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Mybatis Plus 字段為空值時(shí)執(zhí)行更新方法未更新解決方案

    Mybatis Plus 字段為空值時(shí)執(zhí)行更新方法未更新解決方案

    這篇文章主要介紹了Mybatis Plus 字段為空值時(shí)執(zhí)行更新方法未更新解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 一文詳解Reactor模型與實(shí)現(xiàn)示例

    一文詳解Reactor模型與實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了Reactor模型與實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 深入分析Comparable與Comparator及Clonable三個(gè)Java接口

    深入分析Comparable與Comparator及Clonable三個(gè)Java接口

    接口不是類,而是對(duì)類的一組需求描述,這些類要遵從接口描述的統(tǒng)一格式進(jìn)行定義,這篇文章主要為大家詳細(xì)介紹了Java的Comparable,Comparator和Cloneable的接口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-05-05
  • java解析XML幾種方式小結(jié)

    java解析XML幾種方式小結(jié)

    本文給大家匯總了4種java解析XML的方法,結(jié)合具體的示例,非常的詳細(xì),有需要的小伙伴可以參考下
    2016-01-01
  • Java實(shí)現(xiàn)簡(jiǎn)單的五子棋小游戲

    Java實(shí)現(xiàn)簡(jiǎn)單的五子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • java 讀取excel文件轉(zhuǎn)換成json格式的實(shí)例代碼

    java 讀取excel文件轉(zhuǎn)換成json格式的實(shí)例代碼

    這篇文章主要介紹了 java 讀取excel文件轉(zhuǎn)換成json格式的實(shí)例代碼,需要的朋友可以參考下
    2018-04-04

最新評(píng)論

荆门市| 高雄市| 英德市| 丰镇市| 独山县| 麻城市| 石嘴山市| 囊谦县| 贵阳市| 马山县| 麟游县| 茂名市| 固始县| 梧州市| 石狮市| 喀什市| 高台县| 宣威市| 鹤岗市| 普格县| 通州市| 香格里拉县| 长垣县| 景宁| 浠水县| 五家渠市| 仁布县| 北安市| 万宁市| 基隆市| 宝清县| 夏津县| 措勤县| 呼玛县| 玉林市| 民和| 化德县| 江西省| 龙门县| 香港 | 拉萨市|