小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Spring MVC MongoDB 分頁(yè)例子下載

 IT技術(shù)武館 2015-09-21
            前段時(shí)間用spring mvc, spring data mongo, 做了一個(gè)集成的例子,唯一美中不足的是沒有分頁(yè)實(shí)現(xiàn),作為實(shí)際的例子還是有所欠缺的,參考了網(wǎng)上其他一些文章,整理出了下面這個(gè)例子, 主要功能如下:
1.封裝了MongoDB 增刪改查的基類
2.定義分頁(yè)實(shí)現(xiàn)

程序運(yùn)行的效果如下, 本文最后提供源代碼下載


封裝了MongoDB 增刪改查的基類
程序代碼 程序代碼

package com.mon.mongodb;

import java.util.List;

import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

import com.mon.page.Pagination;


public abstract class MongodbBaseDao<T> {

    /**
     * 通過(guò)條件查詢,查詢分頁(yè)結(jié)果
     *
     * @param pageNo
     * @param pageSize
     * @param query
     * @return
     */
    public Pagination<T> getPage(int pageNo, int pageSize, Query query) {
        long totalCount = this.mongoTemplate.count(query, this.getEntityClass());
        Pagination<T> page = new Pagination<T>(pageNo, pageSize, totalCount);
        query.skip(page.getFirstResult());// skip相當(dāng)于從那條記錄開始
        query.limit(pageSize);// 從skip開始,取多少條記錄
        List<T> datas = this.find(query);
        page.setDatas(datas);
        return page;
    }

    /**
     * 通過(guò)條件查詢實(shí)體(集合)
     *
     * @param query
     */
    public List<T> find(Query query) {
        return mongoTemplate.find(query, this.getEntityClass());
    }

    /**
     * 通過(guò)一定的條件查詢一個(gè)實(shí)體
     *
     * @param query
     * @return
     */
    public T findOne(Query query) {
        return mongoTemplate.findOne(query, this.getEntityClass());
    }

    /**
     * 查詢出所有數(shù)據(jù)
     *
     * @return
     */
    public List<T> findAll() {
        return this.mongoTemplate.findAll(getEntityClass());
    }

    /**
     * 查詢并且修改記錄
     *
     * @param query
     * @param update
     * @return
     */
    public T findAndModify(Query query, Update update) {

        return this.mongoTemplate.findAndModify(query, update, this.getEntityClass());
    }

    /**
     * 按條件查詢,并且刪除記錄
     *
     * @param query
     * @return
     */
    public T findAndRemove(Query query) {
        return this.mongoTemplate.findAndRemove(query, this.getEntityClass());
    }

    /**
     * 通過(guò)條件查詢更新數(shù)據(jù)
     *
     * @param query
     * @param update
     * @return
     */
    public void updateFirst(Query query, Update update) {
        mongoTemplate.updateFirst(query, update, this.getEntityClass());
    }

    /**
     * 保存一個(gè)對(duì)象到mongodb
     *
     * @param bean
     * @return
     */
    public T save(T bean) {
        mongoTemplate.save(bean);
        return bean;
    }

    /**
     * 通過(guò)ID獲取記錄
     *
     * @param id
     * @return
     */
    public T findById(String id) {
        return mongoTemplate.findById(id, this.getEntityClass());
    }

    /**
     * 通過(guò)ID獲取記錄,并且指定了集合名(表的意思)
     *
     * @param id
     * @param collectionName
     *            集合名
     * @return
     */
    public T findById(String id, String collectionName) {
        return mongoTemplate.findById(id, this.getEntityClass(), collectionName);
    }

    /**
     * 獲取需要操作的實(shí)體類class
     *
     * @return
     */
    protected abstract Class<T> getEntityClass();

    /**
     * 注入mongodbTemplate
     *
     * @param mongoTemplate
     */
    protected abstract void setMongoTemplate(MongoTemplate mongoTemplate);

    /**
     * spring mongodb 集成操作類 
     */
    protected MongoTemplate mongoTemplate;
}



2. 2.定義分頁(yè)實(shí)現(xiàn)
程序代碼 程序代碼

package com.mon.page;

import java.util.List;

public class Pagination<T> {

    /**
     * 一頁(yè)數(shù)據(jù)默認(rèn)20條
     */
    private int pageSize = 20;
    /**
     * 當(dāng)前頁(yè)碼
     */
    private int pageNo;

    /**
     * 上一頁(yè)
     */
    private int upPage;

    /**
     * 下一頁(yè)
     */
    private int nextPage;
    /**
     * 一共有多少條數(shù)據(jù)
     */
    private long totalCount;

    /**
     * 一共有多少頁(yè)
     */
    private int totalPage;
    /**
     * 數(shù)據(jù)集合
     */
    private List<T> datas;

    /**
     * 分頁(yè)的url
     */
    private String pageUrl;

    /**
     * 獲取第一條記錄位置
     *
     * @return
     */
    public int getFirstResult() {
        return (this.getPageNo() - 1) * this.getPageSize();
    }

    /**
     * 獲取最后記錄位置
     *
     * @return
     */
    public int getLastResult() {
        return this.getPageNo() * this.getPageSize();
    }

    /**
     * 計(jì)算一共多少頁(yè)
     */
    public void setTotalPage() {
        this.totalPage = (int) ((this.totalCount % this.pageSize > 0) ? (this.totalCount / this.pageSize + 1)
                : this.totalCount / this.pageSize);
    }

    /**
     * 設(shè)置 上一頁(yè)
     */
    public void setUpPage() {
        this.upPage = (this.pageNo > 1) ? this.pageNo - 1 : this.pageNo;
    }

    /**
     * 設(shè)置下一頁(yè)
     */
    public void setNextPage() {
        this.nextPage = (this.pageNo == this.totalPage) ? this.pageNo : this.pageNo + 1;
    }

    public int getNextPage() {
        return nextPage;
    }

    public int getTotalPage() {
        return totalPage;
    }

    public int getUpPage() {
        return upPage;
    }

    public int getPageSize() {
        return pageSize;
    }

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

    public int getPageNo() {
        return pageNo;
    }

    public void setPageNo(int pageNo) {
        this.pageNo = pageNo;
    }

    public long getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(long totalCount2) {
        this.totalCount = totalCount2;
    }

    public List<T> getDatas() {
        return datas;
    }

    public void setDatas(List<T> datas) {
        this.datas = datas;
    }

    public String getPageUrl() {
        return pageUrl;
    }

    public void setPageUrl(String pageUrl) {
        this.pageUrl = pageUrl;
    }

    public Pagination(int pageNo, int pageSize, long totalCount2) {
        this.setPageNo(pageNo);
        this.setPageSize(pageSize);
        this.setTotalCount(totalCount2);
        this.init();
    }

    /**
     * 初始化計(jì)算分頁(yè)
     */
    private void init() {
        this.setTotalPage();// 設(shè)置一共頁(yè)數(shù)
        this.setUpPage();// 設(shè)置上一頁(yè)
        this.setNextPage();// 設(shè)置下一頁(yè)
    }
}



配置MongodbTemplate 來(lái)操作數(shù)據(jù)庫(kù)
這是在spring 的配置文件中配置的
程序代碼 程序代碼

  <mongo:mongo host="localhost" port="27017"/>  
      
    <!-- Offers convenience methods and automatic mapping between MongoDB JSON documents and your domain classes. -->  
    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">  
            <constructor-arg ref="mongo"/>  
            <constructor-arg name="databaseName" value="yihaomen"/>  
    </bean>  


運(yùn)行程序,首先生成幾百條數(shù)據(jù),然后在測(cè)試分頁(yè) :


啟動(dòng)芒果數(shù)據(jù)庫(kù),然后在shell 中查看數(shù)據(jù).


剩下的配置,都在源代碼中,可以參考源代碼, 源代碼所需要的 jar 包,如同這里一樣: Spring MVC 與 MongoDB 結(jié)合例子

程序代碼下載:
spring  mvc mongodb pagination sample download


除非申明,文章均為一號(hào)門原創(chuàng),轉(zhuǎn)載請(qǐng)注明本文地址,謝謝!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多