Spring JPAでEntityManagerを使用してオフセット値からの最大件数を取得する方法
オフセット値(初期値=0)から最大件数までを取得する方法です。
setFirstResultメソッドの引数でオフセット値を設定します。0を基底値として1件目から取得していきます。
setMaxResultsの引数で一回のSQLで取得する件数(オフセット値からの)を指定します。
最後にgetResultListメソッドでSQL実行しメモリに保持します。
@RequestMapping(path = "/test/{offset}", method = RequestMethod.GET) | |
public ResponseEntity<?> test(@PathVariable Integer offset) { | |
CriteriaBuilder builder = entityManager.getCriteriaBuilder(); | |
CriteriaQuery<Employee> criteriaQuery = builder.createQuery(Employee.class); | |
Root<Employee> q = criteriaQuery.from(Employee.class); | |
criteriaQuery.select(q); | |
TypedQuery<Employee> query = entityManager.createQuery(criteriaQuery); | |
List<Employee> employee = query.setFirstResult(offset).setMaxResults(1000).getResultList(); | |
int currentOffset = employee.size(); | |
employee.stream().forEach(e –> log.info("{}", e)); | |
return ResponseEntity.ok(Map.of("result", currentOffset)); | |
} | |
// curl -X http://localhost:8080/test/0 |
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^