springmvcmongodb分页例子下载.docx
- 文档编号:26821735
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:10
- 大小:16.38KB
springmvcmongodb分页例子下载.docx
《springmvcmongodb分页例子下载.docx》由会员分享,可在线阅读,更多相关《springmvcmongodb分页例子下载.docx(10页珍藏版)》请在冰豆网上搜索。
springmvcmongodb分页例子下载
SpringMVCMongoDB分页例子下载
前段时间用springmvc,springdatamongo,做了一个集成的例子,唯一美中不足的是没有分页实现,作为实际的例子还是有所欠缺的,参考了网上其他一些文章,整理出了下面这个例子,主要功能如下:
1.封装了MongoDB增删改查的基类
2.定义分页实现程序运行的效果如下,本文最后提供源代码下载封装了MongoDB增删改查的基类
程序代码
packagemon.mongodb;importjava.util.List;importorg.springframework.data.mongodb.core.MongoTemplate;
importorg.springframework.data.mongodb.core.query.Query;
importorg.springframework.data.mongodb.core.query.Update;importmon.page.Pagination;publicabstractclassMongodbBaseDao<T>{/**
*通过条件查询,查询分页结果
*
*@parampageNo
*@parampageSize
*@paramquery
*@return
*/
publicPagination<T>getPage(intpageNo,intpageSize,Queryquery){
longtotalCount=this.mongoTemplate.count(query,this.getEntityClass());
Pagination<T>page=newPagination<T>(pageNo,pageSize,totalCount);
query.skip(page.getFirstResult());//skip相当于从那条记录开始
query.limit(pageSize);//从skip开始,取多少条记录
List<T>datas=this.find(query);
page.setDatas(datas);
returnpage;
}/**
*通过条件查询实体(集合)
*
*@paramquery
*/
publicList<T>find(Queryquery){
returnmongoTemplate.find(query,this.getEntityClass());
}/**
*通过一定的条件查询一个实体
*
*@paramquery
*@return
*/
publicTfindOne(Queryquery){
returnmongoTemplate.findOne(query,this.getEntityClass());
}/**
*查询出所有数据
*
*@return
*/
publicList<T>findAll(){
returnthis.mongoTemplate.findAll(getEntityClass());
}/**
*查询并且修改记录
*
*@paramquery
*@paramupdate
*@return
*/
publicTfindAndModify(Queryquery,Updateupdate){returnthis.mongoTemplate.findAndModify(query,update,this.getEntityClass());
}/**
*按条件查询,并且删除记录
*
*@paramquery
*@return
*/
publicTfindAndRemove(Queryquery){
returnthis.mongoTemplate.findAndRemove(query,this.getEntityClass());
}/**
*通过条件查询更新数据
*
*@paramquery
*@paramupdate
*@return
*/
publicvoidupdateFirst(Queryquery,Updateupdate){
mongoTemplate.updateFirst(query,update,this.getEntityClass());
}/**
*保存一个对象到mongodb
*
*@parambean
*@return
*/
publicTsave(Tbean){
mongoTemplate.save(bean);
returnbean;
}/**
*通过ID获取记录
*
*@paramid
*@return
*/
publicTfindById(Stringid){
returnmongoTemplate.findById(id,this.getEntityClass());
}/**
*通过ID获取记录,并且指定了集合名(表的意思)
*
*@paramid
*@paramcollectionName
*集合名
*@return
*/
publicTfindById(Stringid,StringcollectionName){
returnmongoTemplate.findById(id,this.getEntityClass(),collectionName);
}/**
*获取需要操作的实体类class
*
*@return
*/
protectedabstractClass<T>getEntityClass();/**
*注入mongodbTemplate
*
*@parammongoTemplate
*/
protectedabstractvoidsetMongoTemplate(MongoTemplatemongoTemplate);/**
*springmongodb 集成操作类
*/
protectedMongoTemplatemongoTemplate;
}2.2.定义分页实现
程序代码
packagemon.page;importjava.util.List;publicclassPagination<T>{/**
*一页数据默认20条
*/
privateintpageSize=20;
/**
*当前页码
*/
privateintpageNo;/**
*上一页
*/
privateintupPage;/**
*下一页
*/
privateintnextPage;
/**
*一共有多少条数据
*/
privatelongtotalCount;/**
*一共有多少页
*/
privateinttotalPage;
/**
*数据集合
*/
privateList<T>datas;/**
*分页的url
*/
privateStringpageUrl;/**
*获取第一条记录位置
*
*@return
*/
publicintgetFirstResult(){
return(this.getPageNo()-1)*this.getPageSize();
}/**
*获取最后记录位置
*
*@return
*/
publicintgetLastResult(){
returnthis.getPageNo()*this.getPageSize();
}/**
*计算一共多少页
*/
publicvoidsetTotalPage(){
this.totalPage=(int)((this.totalCount%this.pageSize>0)?
(this.totalCount/this.pageSize+1)
:
this.totalCount/this.pageSize);
}/**
*设置上一页
*/
publicvoidsetUpPage(){
this.upPage=(this.pageNo>1)?
this.pageNo-1:
this.pageNo;
}/**
*设置下一页
*/
publicvoidsetNextPage(){
this.nextPage=(this.pageNo==this.totalPage)?
this.pageNo:
this.pageNo+1;
}publicintgetNextPage(){
returnnextPage;
}publicintgetTotalPage(){
returntotalPage;
}publicintgetUpPage(){
returnupPage;
}publicintgetPageSize(){
returnpageSize;
}publicvoidsetPageSize(intpageSize){
this.pageSize=pageSize;
}publicintgetPageNo(){
returnpageNo;
}publicvoidsetPageNo(intpageNo){
this.pageNo=pageNo;
}publiclonggetTotalCount(){
returntotalCount;
}publicvoidsetTotalCount(longtotalCount2){
this.totalCount=totalCount2;
}publicList<T>getDatas(){
returndatas;
}publicvoidsetDatas(List<T>datas){
this.datas=datas;
}publicStringgetPageUrl(){
returnpageUrl;
}publicvoidsetPageUrl(StringpageUrl){
this.pageUrl=pageUrl;
}publicPagination(intpageNo,intpageSize,longtotalCount2){
this.setPageNo(pageNo);
this.setPageSize(pageSize);
this.setTotalCount(totalCount2);
this.init();
}/**
*初始化计算分页
*/
privatevoidinit(){
this.setTotalPage();//设置一共页数
this.setUpPage();//设置上一页
this.setNextPage();//设置下一页
}
}配置MongodbTemplate来操作数据库
这是在spring的配置文件中配置的
程序代码
<mongo:
mongohost="localhost"port="27017"/>
<!
--OffersconveniencemethodsandautomaticmappingbetweenMongoDBJSONdocumentsandyourdomainclasses.-->
<beanid="mongoTemplate"class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-argref="mongo"/>
<constructor-argname="databaseName"value="yihaomen"/>
</bean>运行程序,首先生成几百条数据,然后在测试分页:
启动芒果数据库,然后在shell中查看数据.剩下的配置,都在源代码中,可以参考源代码,源代码所需要的jar包,如同这里一样:
SpringMVC与MongoDB结合例子程序代码下载:
springmvcmongodbpaginationsampledownload除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- springmvcmongodb 分页 例子 下载