简介
JPARepository继承了PagingAndSortingRepository接口,在开发中常用。
JPARepository对返回值进行了适配,因为在父类接口中通常都返回迭代器,需要我们自己进行强制类型转化。而在JpaRepository中,直接返回了List。
JPARepository的源代码如下所示:
public interface JpaRepository extends PagingAndSortingRepository, QueryByExampleExecutor {
List findAll();
List findAll(Sort var1);
List findAllById(Iterable var1);
List saveAll(Iterable var1);
void flush();
S saveAndFlush(S var1);
void deleteInBatch(Iterable var1);
void deleteAllInBatch();
T getOne(ID var1);
List findAll(Example var1);
List findAll(Example var1, Sort var2);
}
示例:
准备工作:
实体类:
@Entity
@Table(name = "tb_dept")
public class Dept {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer deptno;
@Column
private String dname;
@Column
private String loc;
//……getter/setter、默认构造方法、全参构造方法
}
第一步:创建Maven项目,添加依赖:
org.springframework.boot
spring-boot-starter-data-jpa
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-test
test
junit
junit
4.12
test
第二步:修改application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/db_test?useSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF8&autoReconnect=true&failOverReadOnly=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
enable_lazy_load_no_trans: true
show-sql: true
第三步:编写接口DeptDao.java:
public interface DeptDao extends JpaRepository {
}
第四步:提供测试代码:
@RunWith(SpringRunner.class)
@SpringBootTest
@EnableAutoConfiguration
public class DeptDaoTest {
@Autowired
private DeptDao deptDao;
@Test
public void fun() {
//Order 定义了排序规则
Sort.Order order = new Sort.Order(Sort.Direction.DESC, "deptno");
//Sort对象封装了排序规则
Sort sort = Sort.by(order);
List depts = deptDao.findAll(sort);
depts.forEach(System.out::println);
}
}