狼行天下的gravatar头像
狼行天下 2016-06-05 13:24:22

springdata JPA有没有类似mysql的limit的查询语法?

目前在做一个导出功能,但是在用JPA的时候发现并没有oracle的rownum和mysql的limit用法,所以想问问JPA取部分数据应该怎么处理

所有回答列表(2)
最代码官方的gravatar头像
最代码官方  LV167 2016年6月5日

1.jpa支持native sql查询,所以你可以直接写sql查询得到数据

package com.zuidaima.springdata.repository;

import java.util.List;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import com.zuidaima.springdata.entity.User;

/**
 * *@author javaniu 2013-06-04 22:27:22
 */

public interface UserRepository extends PagingAndSortingRepository<User, Long>,
		JpaSpecificationExecutor<User> {
	@Query(value = "select * from user where id in(:ids)", nativeQuery = true)
	List<User> findAllByIds(@Param("ids") List<Long> ids);

	@Query(value = "from User where name=?1")
	User findAllByName(String name);
}			

2.jpa的PagingAndSortingRepository等内置类就支持分页查询

Page<T> findAll(Pageable pageable);
int p=1;
int ps=10;
Pageable pageable = new PageRequest(0, ps, sort);

通过new Pageable对象即可,注意page是从0开始

参考资料:

springdata jpa 1.7.0.RELEASE各种查询方法总结demo大全,通过junit测试

Spring Data JPA 1.4.3 RELEASE 中文文档

年末最代码部分源码大出血分享-freemarker,bootstrap,springdata jpa分页代码

分享一份完整的spring data jpa demo代码

评论(0) 最佳答案
狼行天下的gravatar头像
狼行天下  LV18 2016年6月6日

嗯,目前根据第二种分页的形式解决的,第一种传ids有些不合适

 

谢谢

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友