//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.ll.exam.qsl.user.entity;
import ...
public class QSiteUser extends EntityPathBase<SiteUser> {
private static final long serialVersionUID = 1465624588L;
//static으로 선언된 변수
public static final QSiteUser siteUser = new QSiteUser("siteUser");
...
}
이 변수를 다른 클래스에서 어떻게 사용할까 ?
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class UserRepositoryImpl implements UserRepositoryCustom{
private final JPAQueryFactory jpaQueryFactory;
@Override
public SiteUser getQslUser(Long id) {
/*select * from siteuser where id = 1*/
return jpaQueryFactory
.select(QSiteUser.siteUser)
.from(QSiteUser.siteUser)
.where(QSiteUser.siteUser.id.eq(id))
.fetchOne();
}
}
return문에서 QSiteUser클래스를 붙여 정적변수를 사용하고 있다.
이코드를 import static을 사용하여 다음과 같이 바꿔봅시다.
package com.ll.exam.qsl.user.entity;
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
import static com.ll.exam.qsl.user.entity.QSiteUser.siteUser;
@RequiredArgsConstructor
public class UserRepositoryImpl implements UserRepositoryCustom{
private final JPAQueryFactory jpaQueryFactory;
@Override
public SiteUser getQslUser(Long id) {
/*select * from siteuser where id = 1*/
return jpaQueryFactory
.select(siteUser)
.from(siteUser)
.where(siteUser.id.eq(id))
.fetchOne();
}
}
import static com.ll.exam.qsl.user.entity.QSiteUser.siteUser;
위 코드를 추가함으로써 QSiteUser 클래스의 siteuser 변수를 클래스명을 사용하지않고 직접 사용할 수 있게되었다. 따라서 조금 더 가독성 좋고 깔끔한 코드가 된다.