@Component 어노테이션을 이용하면 Bean Configuration 파일에 Bean을 따로 등록하지 않아도 사용할 수 있다. 빈 등록자체를 빈 클래스 자체에다가 할 수 있다는 의미이다.
@Component 어노테이션은 기본적으로 타입기반의 자동주입 어노테이션이다.
스프링에서 빈 인스턴스가 생성된 이후 @Autowired를 설정한 메서드가 자동으로 호출되고, 인스턴스가 자동으로 주입된다.
즉, 해당 변수 및 메서드에 스프링이 관리하는 Bean을 자동으로 매핑해주는 개념
@Autowired 는 변수, Setter메서드, 생성자, 일반 메서드에 적용이 가능하며,
<property>, <constructor-arg>
태그와 동일한 역할을 한다.
Controller는 MVC 패턴의 C에 해당하고,
주로 사용자의 요청을 처리 한 후 지정된 뷰에 모델 객체를 넘겨주는 역할을 수행한다.
지정된 뷰에 모델 객체를 넘겨주는 역할은 두 가지로 나누어 설명할 수 있다.
비즈니스 로직이나 respository layer 호출하는 함수에 사용된다. 다른 어노테이션과 다르게 @Component에 추가된 기능은 없다. 하지만 나중에 Spring 측에서 추가적인 exception handling을 해줄 수도 있으니 비즈니스 로직에는 해당 어노테이션을 사용하자.
@Mapper는 마커 인터페이스라는 것이다.
즉, @Mapper는 단순히 '이것은 매퍼입니다!!'라는 것을 표시하기 위한 어노테이션이라는 것이다.
중요한 것은 @Mapper와 같이 쓰이는 @MapperScan이지 굳이 @Mapper를 쓰지 않고 커스텀 어노테이션을 생성해서 사용해도 된다.
@SpringBootApplication은 자동 설정을 해주기 위한 어노테이션으로, org.springframework.boot.autoconfigure 패키지에 들어 있다
@SpringBootTest 어노테이션을 통해 스프링부트 어플리케이션 테스트에 필요한 거의 모든 의존성을 제공해 줍니다.
-@SpringBootTest 어노테이션 내에 어떠한 테스트 환경으로 테스트를 실행할 것인지를 따로 지정할 수 있습니다.
스프링부트 테스트를 진행하기 위해서는 먼저 다음과 같이 의존성을 추가해야 합니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
--dallas에서 근무하는 모든 사의 이름 직업 부서버호 및 부서이름을 출력
SELECT ENAME, JOB, E.DEPTNO, DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO AND LOC = 'DALLAS';
--모든 사원의 이름, 직업 , 부서이름, 급여 및 등급을 출력하라
SELECT ENAME, JOB, DNAME, SAL, GRADE
FROM EMP E, DEPT D, SALGRADE G
WHERE D.DEPTNO = E.DEPTNO AND E.SAL BETWEEN G.LOSAL AND G.HISAL;
--스미스보다 늦게 입사한 사원의 이름 및 입사일을 출력하라
SELECT ENAME, HIREDATE FROM EMP WHERE HIREDATE > (SELECT HIREDATE FROM EMP WHERE ENAME = 'SMITH');
--모든 사원의 급여 최고액 최저액 총액 및 평균액을 출력하되,
각 컬럼명을 mzximum, minimum, sum, average 로 지저하여 출력하라.
SELECT MAX(SAL) AS Maximum, MIN(SAL) AS Minimum, SUM(SAL) AS Sum, AVG(SAL) AS Averager FROM EMP;
--각 직업별로 급여 최저액 최고액 총액 및 평균액을 출력하라
SELECT JOB, MIN(SAL), MAX(SAL), SUM(SAL), AVG(SAL) FROM EMP GROUP BY JOB;
--직업이 동일한 사람 수를 직업과 같이 출력하라
SELECT JOB, COUNT(JOB) FROM EMP GROUP BY JOB;
-----------------------------------------------------------------------