需求就是页面分页展示数据,每页多少条,总共多少条数据,总共多少页。我们需要返回总条数total和当前页的数据rows,所以定义接收类结构:
@Datapublic class Paged<T> {private List<T> rows;private int total;}
第一种可能大家都会想到,就是利用cypher的skip,limit关键字来分页,和sql分页的原理是一样的。具体写法来看一下,按照创建时间倒排序查询第1页的数据,每页展示10条。获取rows的cypher语句:
@Query(" match(n) return n " +" order by n.createTime desc" +" skip 0 limit 10 ")List<String> getPagedList();
然后获取总条数:
/*** 获取总条数,如果有条件需要加上过滤条件* @return*/@Query(" match(n) return count(n) ")int getTotal();
这样分别返回结果就可以了,在service层在组装一下,两个结果放在结构体Paged返回就行了。
二、基于Spring data neo4j 语句分页
@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD})@QueryAnnotation@Documentedpublic @interface Query {String CLASS = "org.springframework.data.neo4j.annotation.Query";String VALUE = "value";String value() default "";String countQuery() default "";}
import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.data.neo4j.annotation.Query;import org.springframework.data.neo4j.repository.Neo4jRepository;import org.springframework.stereotype.Repository;@Repositorypublic interface BaseSearchRepository extends Neo4jRepository<CompanyEntryNode, String> {/*** @param pageable 页码参数* @return*/@Query(value = "match(n) return n",countQuery = "match(n) return count(n) ")Page<String> getPagedList(Pageable pageable);}
private Page<String> getFullTextSearch(SearchCondition searchCondition) {Pageable pageable=PageRequest.of(searchCondition.getPage,searchCondition.getSize,Sort.by(Sort.Direction.DESC,"createTime"))return baseSearchRepository.getPagedList(pageable);}
{"code": 200,"message": "成功响应","data": {"content": [//content这个key,对应的就是查询结果,是个数组{"id": 337}],"pageable": { //这个pageable就是我查询时候的那个参数"sort": {//排序条件,如果参数传了分页相关的"sorted": false,"unsorted": true,"empty": true},"offset": 0,"pageNumber": 0,//这个就是页码,从0开始"pageSize": 5,//这是每页记录条数"unpaged": false,"paged": true},//这里往下就是Page这个接口所含的分页属性,前端取值取这个应该更方便"totalElements": 2,//总记录条数"totalPages": 1,//总页数"last": true,"number": 0,//这里跟上面pageable里面是一样的,页码"size": 5,//每页记录条数"sort": {"sorted": false,"unsorted": true,"empty": true},"numberOfElements": 2,"first": true,"empty": false},"date": 1566197748209}
好了今天的文章就到这里,拜拜!!!
关于前期引用,注解找不到等问题,参考Springboot+Neo4j maven仓库版本这篇文章。
- 本期完 -
,我会及时回复。由于微信限制了公众号留言功能,有问题你可以直接发公众号聊天,我会在下期文章末尾解答你的问题。为方便看最新内容,长按下图图片记得关注哦

!

文章转载自Neo4j权威指南,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




