SpringBoot操作MongoDB實現分頁查詢

來源:互聯網
上載者:User

前幾天寫了一篇關於介紹SpringBoot的簡單使用。以及使用SpringBoot JPA做了一次資料庫的一個CURD (地址:http://blog.csdn.net/canot/article/details/51449589)這篇檔案簡單學習Spring Boot JPA 或者說是Spring Data對現在很流行的一個nosql產品MongoDB的簡單操作(主要針對在分頁查詢上)。

於前面SpringBoot的HelloWorld類似,在匯入必要的核心包之後,為了正常驅動MongoDB還需要額外的包(MongoDB驅動包):

        <dependency>            <groupId>org.mongodb</groupId>            <artifactId>mongo-java-driver</artifactId>            <version>3.2.2</version>        </dependency>

在之前的Spring Boot的示範中,為了使得項目能夠正確的驅動資料庫。必須在項目的根目錄下增加了一個設定檔:application.properties.該設定檔寫入了資料庫的資訊,如操作哪個資料庫,帳號密碼等等。在操作MongoDB中這個檔案不是必須的了。當你的資料庫沒有設定帳號密碼時,當你要操作的集合位於資料庫test中時,這個設定檔可以省掉。當如果不是上述的情況那麼一定需要該設定檔:

spring.data.mongodb.database: ticketspring.data.mongodb.uri: mongodb://localhost:27017//xxxx

Dao介面:

@Repositorypublic interface CustomerDao  extends PagingAndSortingRepository<Customer,String>{}

實體類:

//指定對應於集合customer@Document(collection = "customer")public class Customer {//主鍵    @Id    private String _id;    private String name;    private String phone;    private String gender;    private String birthday;    private String passport;//xxxx}

Controller層:

@AutowiredCustomerDao customerDao;//完成分頁請求@RequestMapping("/selectName")    public List<Customer> selectName(@RequestParam("id") int id){        //構建分頁資訊        PageRequest pageRequest = buildPageRequest(id,5,null);        //查詢指定分頁的內容        Iterator<Customer> customers =  customerDao.findAll(pageRequest).iterator();        List<Customer> lists = new ArrayList<Customer>();        while(customers.hasNext()){            lists.add(customers.next());        }        return lists;    }    /**     *      * 建立分頁請求.           */    private PageRequest buildPageRequest(int pageNumber, int pageSize,String sortType) {        Sort sort = null;        if ("auto".equals(sortType)) {            sort = new Sort(Direction.DESC, "id");        } else if ("birthday".equals(sortType)) {            sort = new Sort(Direction.ASC, "birthday");        }        //參數1表示當前第幾頁,參數2表示每頁的大小,參數3表示排序        return new PageRequest(pageNumber-1,pageSize,sort);    }

Spring Boot 或者Spring data提供給我們的介面形式來幫我們來完成對於表的CRUR操作。那麼我們了來思考怎麼實現對於某個欄位的查詢,在以前我們自己手寫的DAO中我們通過編寫一個findByxxx來實現,在Spring Boot或者說Spring Data中它也為我們提供了這種方法,並且我們也只需要寫在介面中,而不需要實作類別,它就能幫我們實現。

查詢所有性別為男,並按生日排序

@Repositorypublic interface CustomerDao  extends PagingAndSortingRepository<Customer,String>{//這個方法名不能亂寫,findByXXX,那麼對於的類中必須有XXX欄位。也就是說對應的資料庫中一定要存在XXX欄位對應的列   public Page<Customer> findBygender(String gender,Pageable pageable);}

這裡注意一點,雖然我們在調用Repository方法中的分頁查詢時,傳入的參數是PageRequest。但一定要在Repository定義該方法時參數定義為Pageable。否則會報錯:Paging query needs to have a Pageable parameter

Controller:

     @RequestMapping("/selectBygender")     public Page<Customer> getBygender(String gender,@RequestParam("pageNumber") int pageNumber){     //構建分頁資訊    PageRequest pageRequest = buildPageRequest(pageNumber,5,"birthday");Page<Customer> customera = customerDao.findBygender(gender,pageRequest); return customers;     }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.