Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...


SQLJPA
<WHERE 44 < agefindByAgeGreaterThan(int age);
<=WHERE 44 <= agefindByAgeGreaterThanEqual(int age);
>WHERE age < 44findByAgeLessThan(int age);
범위WHERE age BEETWEEN 10 and 20findByAgeBetween(int low,int high);
부분범위WHERE age in ( 34,35,36)findByAgeIn(int age[]);
ANDWHERE 40 < age AND sex='남'findByAgeGreaterThanAndSex(int age,String sex);
ORWHERE 40 < age OR sex='여'findByAgeGreaterThanOrSex(int age,String sex);


GROUP BY

집계함수

함수용도함수용도
AVG
MIN
COUNT
SUM
COUNT_BIG
STDEV
GROUPING
STDEVP
GROUPING_ID
VAR
CHECKSUM_AGG
VARP
MAX



집계 DTO정의

Address데이터를 가지고  특정집계 수행을 한다고 하면 , ex> 성별에따른 회원수 라고 한다면

Address가 가진 2차원 테이블의 모습이 바뀌게 됩니다. 

draw.io Diagram
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNameadresscntdto
simpleViewerfalse
width
diagramWidth571
revision1


Address는 이미 정의를 하였지만, 성별에 따른 회원수를 표현하는 오브젝트는 새롭게 정의할 필요가 있습니다.

정의없이 사용도 가능하지만, 추후에 이에 대응하는 Object가 없을시 제어가 어려워질수 있습니다.

Code Block
languagejava
themeEmacs
package com.example.demo.data;

public class AddressStatistics {
	private String 	fname;
	private Long	cnt;
	
	public AddressStatistics(String fname,Long cnt) {
		this.fname = fname;
		this.cnt = cnt;
	}
}



쿼리 정의

처음으로 쿼리검색 조건을 JPA함수형이 아닌, SQL문과 비슷한 JQL문을 사용하였습니다.


SQLJPA
SELECT sex,count(*) FROM db_example.address group by sex

public interface AddressRepo extends CrudRepository<Address, Long>{

@Query("select new com.example.demo.data.AddressStatistics(t.sex,count(t) as cnt) from Address t group by t.sex")
List<AddressStatistics> findSexCount();

}

Code Block
languagejava
themeEmacs
title사용예
		List<AddressStatistics> addressStaticBySex = addressRepo.findSexCount();		
		addressStaticBySex.forEach(item -> {
			String itemString = String.format("%s %d", item.getFname(), item.getCnt());
			System.out.println(itemString);
		});