问题描述
如题,springdatajpa用的是hibernate的实现。dao层继承了JpaRepository接口。初接触springdatajpa,求大神给小女子一个带条件的查询分页的demo。感激不尽!
解决方案
本帖最后由 shuzhen526 于 2013-04-01 14:16:52 编辑
解决方案二:
下载springside例子,继承了分页demo
解决方案三:
引用1楼lvzg_005的回复:
下载springside例子,继承了分页demo
我想用springdatajpa的接口中提供的分页。。。
解决方案四:
想用就用呗。createQuery,setParameter,setFirstResult,setMaxResults,getResultList,不就这么几步吗。
解决方案五:
@ComponentpublicinterfaceTaskDaoextendsPagingAndSortingRepository<Task,Long>,JpaSpecificationExecutor<Task>{Page<Task>findByUserId(Longid,PageablepageRequest);@Modifying@Query("deletefromTasktaskwheretask.user.id=?1")voiddeleteByUserId(Longid);}
publicPage<Task>getUserTask(LonguserId,Map<String,Object>searchParams,intpageNumber,intpageSize,StringsortType){PageRequestpageRequest=buildPageRequest(pageNumber,pageSize,sortType);Specification<Task>spec=buildSpecification(userId,searchParams);returntaskDao.findAll(spec,pageRequest);}/***创建分页请求.*/privatePageRequestbuildPageRequest(intpageNumber,intpagzSize,StringsortType){Sortsort=null;if("auto".equals(sortType)){sort=newSort(Direction.DESC,"id");}elseif("title".equals(sortType)){sort=newSort(Direction.ASC,"title");}returnnewPageRequest(pageNumber-1,pagzSize,sort);}/***创建动态查询条件组合.*/privateSpecification<Task>buildSpecification(LonguserId,Map<String,Object>searchParams){Map<String,SearchFilter>filters=SearchFilter.parse(searchParams);filters.put("user.id",newSearchFilter("user.id",Operator.EQ,userId));Specification<Task>spec=DynamicSpecifications.bySearchFilter(filters.values(),Task.class);returnspec;}
帮你贴了一部分springside源码看用的上不,或者看看从这里面悟出些道道不
解决方案六:
引用3楼forgetsam的回复:
想用就用呗。createQuery,setParameter,setFirstResult,setMaxResults,getResultList,不就这么几步吗。
请问能讲详细一点么……
解决方案七:
引用5楼shuzhen526的回复:
引用3楼forgetsam的回复:想用就用呗。createQuery,setParameter,setFirstResult,setMaxResults,getResultList,不就这么几步吗。请问能讲详细一点么……
我是来看丫头的!
解决方案八:
楼主,问题如何解决的,jpa之前木有用过!
解决方案九:
taskDao中的findAll怎么不贴全?
解决方案十:
分页应该在写sql的时候,配置开始id和结束id就行了吧
解决方案十一:
谢谢各位啊。问题早就解决了,由于时间关系没来得及结贴,再次感谢。PagingAndSortingRepository这个接口中有带条件的分布查询方法,根据它的规范并传进去相应的参数即可。
解决方案十二:
引用3楼forgetsam的回复:
想用就用呗。createQuery,setParameter,setFirstResult,setMaxResults,getResultList,不就这么几步吗。
跟这个差不多。就是这么用的。
解决方案十三:
引用4楼lvzg_005的回复:
@ComponentpublicinterfaceTaskDaoextendsPagingAndSortingRepository<Task,Long>,JpaSpecificationExecutor<Task>{Page<Task>findByUserId(Longid,PageablepageRequest);@Modifying@Query("deletefromTasktaskwheretask.user.id=?1")voiddeleteByUserId(Longid);}publicPage<Task>getUserTask(LonguserId,Map<String,Object>searchParams,intpageNumber,intpageSize,StringsortType){PageRequestpageRequest=buildPageRequest(pageNumber,pageSize,sortType);Specification<Task>spec=buildSpecification(userId,searchParams);returntaskDao.findAll(spec,pageRequest);}/***创建分页请求.*/privatePageRequestbuildPageRequest(intpageNumber,intpagzSize,StringsortType){Sortsort=null;if("auto".equals(sortType)){sort=newSort(Direction.DESC,"id");}elseif("title".equals(sortType)){sort=newSort(Direction.ASC,"title");}returnnewPageRequest(pageNumber-1,pagzSize,sort);}/***创建动态查询条件组合.*/privateSpecification<Task>buildSpecification(LonguserId,Map<String,Object>searchParams){Map<String,SearchFilter>filters=SearchFilter.parse(searchParams);filters.put("user.id",newSearchFilter("user.id",Operator.EQ,userId));Specification<Task>spec=DynamicSpecifications.bySearchFilter(filters.values(),Task.class);returnspec;}
帮你贴了一部分springside源码看用的上不,或者看看从这里面悟出些道道不
跟这个差不多。就是这么用的。
解决方案十四:
到底怎么用啊美女
解决方案十五:
美女求demo急用啊
解决方案:
SearchFilter需要自己构造对吗?
解决方案:
详细点吧美女!!
解决方案:
时间太久了,我现在手上没有源码。dao层的接口要继承这个PagingAndSortingRepository接口,它里面有分页排序查询的接口,传相应的参数进去即可,不用自己来实现可直接调用。
解决方案:
引用17楼shuzhen526的回复:
时间太久了,我现在手上没有源码。dao层的接口要继承这个PagingAndSortingRepository接口,它里面有分页排序查询的接口,传相应的参数进去即可,不用自己来实现可直接调用。
这个里面的参数具体怎么传啊。我是要TIMEbetween***and***andname=***怎么传值进去。。
解决方案:
引用17楼shuzhen526的回复:
时间太久了,我现在手上没有源码。dao层的接口要继承这个PagingAndSortingRepository接口,它里面有分页排序查询的接口,传相应的参数进去即可,不用自己来实现可直接调用。
这个里面的参数具体怎么传啊。我是要TIMEbetween***and***andname=***怎么传值进去。。
解决方案:
packagecom.mediaadx.dynamix.authority.dao;importjava.util.List;importorg.springframework.data.domain.Page;importorg.springframework.data.domain.Pageable;importorg.springframework.data.jpa.repository.Query;importorg.springframework.data.repository.PagingAndSortingRepository;importcom.mediaadx.dynamix.account.entity.UserAccount;importcom.mediaadx.dynamix.authority.entity.Security;publicinterfaceISecurityDAOextendsPagingAndSortingRepository<Security,Long>{Page<Security>findByUserNameLike(Stringname,Pageablepageable);}
注意里面使用Page,Pageable是spring的类,Security是个entity里面有属性user<UserAccount>,UserAccount里面有个name<String>
解决方案:
引用20楼whos2002110的回复:
packagecom.mediaadx.dynamix.authority.dao;importjava.util.List;importorg.springframework.data.domain.Page;importorg.springframework.data.domain.Pageable;importorg.springframework.data.jpa.repository.Query;importorg.springframework.data.repository.PagingAndSortingRepository;importcom.mediaadx.dynamix.account.entity.UserAccount;importcom.mediaadx.dynamix.authority.entity.Security;publicinterfaceISecurityDAOextendsPagingAndSortingRepository<Security,Long>{Page<Security>findByUserNameLike(Stringname,Pageablepageable);}注意里面使用Page,Pageable是spring的类,Security是个entity里面有属性user<UserAccount>,UserAccount里面有个name<String>
大神,能加下QQ说么。。。416192245
解决方案:
springdatajpa没玩过啊!
解决方案:
引用18楼Y19900528的回复:
Quote: 引用17楼shuzhen526的回复:
时间太久了,我现在手上没有源码。dao层的接口要继承这个PagingAndSortingRepository接口,它里面有分页排序查询的接口,传相应的参数进去即可,不用自己来实现可直接调用。这个里面的参数具体怎么传啊。我是要TIMEbetween***and***andname=***怎么传值进去。。
publicinterfaceUserRepositoryextendsCrudRepository<User,Integer>{//继承你需要的接口UserfindByNameAndTimeBetween(Stringname,DatestartDate,DateendDate);//在这里声明一下你需要的接口,当然,这个接口名得按照框架的规范来写。有的接口里已经存在的方法了,就不需要声明了。@Query("selectufromUseruwhereu.firstname=?")List<User>findByFirstname(Stringfirstname);//当然,如果实在满足不了你的需求,你也可以这样来自己写查询语句//那个分页的,dao层的接口要继承这个PagingAndSortingRepository接口,然后直接调用方法传参数就可以了,实在不懂的加我qq吧,173636035}
接口名的规范:
解决方案:
学习帖,收藏了。
解决方案:
springdatajpa相关代码demo下载:
解决方案:
ad