Spring Data JPA使用

添加Maven依赖

<properties>
    <spring.data.version>1.9.0.RELEASE</spring.data.version>
    <hibernate.version>5.0.1.Final</hibernate.version>
</properties>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>${spring.data.version}</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>${hibernate.version}</version>
</dependency>

在Spring中配置Spring Data JPA

此处省略JPA及事务的配置

<jpa:repositories base-package="com.tiamaes.gjds.das.repository" entity-manager-factory-ref="entityManagerFactory" transaction-manager-ref="transactionManager" repository-impl-postfix="Impl"/>

使用Spring Data JPA

要使用Spring Data JPA只需要创建一个接口并继承自JpaRepository即可。

public interface SystemUserRepository extends JpaRepository<TSystemUser, String> {

}

测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
public class BaseSpringTestCase {

}

public class SystemUserRepositoryTest extends BaseSpringTestCase{

    @Autowired
    private SystemUserRepository systemUserRepository;

    @Test
    public void testFindAll() {
        List<TSystemUser> list = this.systemUserRepository.findAll();
        assertNotNull(list);
    }
}

测试分页

@Test
public void testFindByPageable(){
    Pageable page = new PageRequest(1, 2);
    Page<TSystemUser> pageList = this.systemUserRepository.findAll(page);
    //获取查询结果
    assertNotNull(pageList.getContent());
    //获取总记录数
    assertTrue(pageList.getTotalElements() > 0);
    //获取总页数
    assertTrue(pageList.getTotalPages() > 0);
}

要实现分页只需要调用
PageRequest有两个参数page和pageSize。这里的页码是从0开始的。
PageRequest(0, 10) 查询的是第1-10条记录。
PageRequest(1, 10) 查询的是第11-20条记录。

如果总记录数小于要查询的数据的开始行数,则Spring Data JPA会放弃执行查询数据的SQL。
比如表A有6条记录,使用PageRequest(1, 10)将查不到任何记录,因为开始位置是11,这时Spring只会执行查询总记录数的SQL语句,而不会执行查询数据的SQL语句。

你可能感兴趣的:(spring,jpa)