public interface LogMapper extends BaseMapper<Log> 为什么使用extends
时间: 2024-05-23 09:13:48 浏览: 17
在Java中,使用关键字extends表示继承,通过接口继承可以使子接口或者类获得父接口或者类的方法和属性。在这个例子中,LogMapper接口继承了BaseMapper接口,这意味着LogMapper接口可以使用BaseMapper接口中的方法和属性。通过继承可以使代码重用和减少代码冗余,同时提高代码的可维护性和可拓展性。
相关问题
public interface LogMapper extends BaseMapper<Log> 为什么使用extends不用implements
在Java中,使用关键字implements表示接口实现,接口实现是指类实现接口中的所有方法。而使用extends关键字,表示接口或者类继承另一个接口或者类,继承是指子类获得父类或者父接口的属性和方法,但不需要实现这些方法。在这个例子中,LogMapper接口是通过继承BaseMapper接口来获得BaseMapper接口中的方法和属性,而不是实现它们。因此使用extends关键字更为合适。如果使用implements关键字,则需要在LogMapper接口中实现BaseMapper接口中所有的方法,这样会增加代码的复杂度和冗余。
如何在以下代码中加入分页的功能 @Query( "select approvalRecord from ApprovalRecord approvalRecord inner join ApprovalRecordItem approvalRecordItem on approvalRecord = approvalRecordItem.approvalRecord where approvalRecordItem.status <> 'AUDITING' and approvalRecordItem.createdBy.login = ?#{principal.username} order by approvalRecordItem.id desc" ) List<ApprovalRecord> findAuditedByCurrentUser(); @GetMapping("/approval-records/my-created") public List<ApprovalRecord> getAllCreatedApprovalRecords() { log.debug("REST request to get all getAllCreatedApprovalRecords"); return approvalRecordRepository.findByCreatedByIsCurrentUser(); }
可以使用 Spring Data JPA 的分页查询功能,具体步骤如下:
1. 在接口中引入 Pageable 类型参数,并修改方法返回类型为 Page\<ApprovalRecord\>。
```java
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
...
@GetMapping("/approval-records/my-created")
public Page<ApprovalRecord> getAllCreatedApprovalRecords(Pageable pageable) {
log.debug("REST request to get all getAllCreatedApprovalRecords");
return approvalRecordRepository.findByCreatedByIsCurrentUser(pageable);
}
```
2. 在 Repository 接口中添加分页查询方法,并修改原有的查询方法为分页查询方法。
```java
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ApprovalRecordRepository extends JpaRepository<ApprovalRecord, Long> {
Page<ApprovalRecord> findByCreatedByIsCurrentUser(Pageable pageable);
}
```
3. 在调用接口时,传入 Pageable 对象即可实现分页查询。
例如,获取第一页,每页10条记录:
```
/approval-records/my-created?page=0&size=10
```
获取第二页,每页20条记录:
```
/approval-records/my-created?page=1&size=20
```
注意,分页查询不应该返回全部数据,否则会导致性能问题。建议限制每页最大记录数,例如100条,避免一次返回过多数据。