springDataJpa的问题

springDataJpa怎样实现只查询数据的前几行?mysql用limit即可实现,springDataJpa怎样实现实现它呢?

简单,springDataJpa下可以使用sql的,下面这个sql里的表实际上是实体类类名,在运行的时候他会自动对应映射到你数据库所对应的表

public interface BookDao extends JpaRepository<Book,Integer>{
    @Query(value ="select b from Book b where b.name like CONCAT('%',:name,'%') limit 8 ")
    List<Book> selectMoHu(@Param("name")String name);

当然你也可以使用原生sql,那么就需要你加参数nativeQuery = true,例如下面代码

public interface BookDao extends JpaRepository<Book,Integer>{
    @Query(value ="select b from Book b  limit ?1 ",nativeQuery = true)
    List<Book> selectMoHu(Integer limit);

这个?1就代表第一个参数,其实就是占位符,你应该明白吧,如果有两个参数,第二个占位符就是?2以此类推

import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
    //T 为model,需要有id字段,limit为指定的limit条数
    public List<T> findByIdDescLimit(int limit){
        return super.findAll(new PageRequest(0,limit,new Sort(Sort.Direction.DESC, "id"))).getContent();
    }

用findTop几或者findFirst几