여러 쿼리 메소드는 대부분 두 가지 중 하나.
QueryDSL
연동 방법
의존성 추가
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
</dependency>
.....
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
http://www.querydsl.com/static/querydsl/4.0.1/reference/ko-KR/html_single/
public interface AccountRepository extends JpaRepository<Account, Long>, QuerydslPredicateExecutor<Account> {
}
@RunWith(SpringRunner.class)
@DataJpaTest
public class AccountRepositoryTest {
@Autowired
AccountRepository accountRepository;
@Test
public void crud() {
Predicate predicate = QAccount.account
.firstname.containsIgnoreCase("cm")
.and(QAccount.account.lastname.startsWith("lee"));
Optional<Account> one = accountRepository.findOne(predicate);
assertThat(one).isEmpty();
}
}