728x90
반응형
SMALL

### 에러 노트: Thymeleaf 템플릿 처리 오류

#### 문제 설명

- **에러 메시지**:
    

    `[THYMELEAF][http-nio-9090-exec-1] Exception processing template 
    "alimTalk/countAlimCenter": Error resolving template [alimTalk/countAlimCenter], 
    template might not exist or might not be accessible by any of the configured 
    Template Resolvers`



    
- **원인**: HTML을 반환하지 않고 결과만 받아야 하는 상황에서 발생한 에러입니다. `Thymeleaf` 템플릿 처리 과정에서 지정한 템플릿을 찾을 수 없거나 접근할 수 없다는 의미입니다.

#### 발생 상황

HTML 대신 JSON만 반환하는 컨트롤러에서 `Thymeleaf` 템플릿을 처리하려고 할 때 발생합니다. 이러한 경우, 불필요한 템플릿 처리를 시도하게 되어 오류가 발생합니다.

#### 해결 방안

- JSON 응답을 반환하려면 `@ResponseBody` 어노테이션을 사용하여 컨트롤러 메소드가 JSON 형식으로 응답하도록 설정해야 합니다.

#### 예시 코드

 @GetMapping("/alimTalk/countAlimCenter")     
 @ResponseBody     public ResponseEntity<MyResponse> getCountAlimCenter() {         
 MyResponse response = new MyResponse();         
 // 결과 설정         
 return ResponseEntity.ok(response);     
 } 
 }`


### 주의사항

- `@RestController`를 사용하면 모든 메소드에 자동으로 `@ResponseBody`가 적용되어 JSON 응답을 쉽게 반환할 수 있다.
- Thymeleaf를 사용할 필요가 없는 상황에서는 꼭 `@ResponseBody`나 `@RestController`를 사용하는 것을 잊지 말기!

728x90
반응형
LIST
728x90
반응형
SMALL

### JOIN (INNER JOIN)

- **정의**: 두 테이블 간의 공통된 값이 있는 행만 반환합니다.
- **작동 방식**: 두 테이블에서 조인 조건을 만족하는 행이 존재하는 경우에만 결과에 포함됩니다.
- **예시**:
    
    sql
        
    `SELECT * FROM table1 t1 JOIN table2 t2 ON t1.id = t2.table1_id;`
    
    - 이 쿼리는 `table1`과 `table2`에서 `id`와 `table1_id`가 일치하는 행만 반환합니다.

### LEFT JOIN (LEFT OUTER JOIN)

- **정의**: 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환하며, 오른쪽 테이블에 일치하는 행이 없으면 NULL로 채워진 결과를 반환합니다.
- **작동 방식**: 왼쪽 테이블의 모든 행이 결과에 포함되며, 오른쪽 테이블에서 조인 조건을 만족하는 행이 없는 경우 NULL이 반환됩니다.
- **예시**:
    
    sql
        
    `SELECT * FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.table1_id;`
    
    - 이 쿼리는 `table1`의 모든 행을 반환하고, `table2`에서 일치하는 행이 없으면 해당 컬럼에 NULL이 들어갑니다.

### 요약

- `JOIN`(INNER JOIN)은 두 테이블에서 일치하는 행만 반환하며, `LEFT JOIN`은 왼쪽 테이블의 모든 행을 반환하고 오른쪽 테이블에서 일치하는 행이 없을 경우 NULL을 반환합니다.

728x90
반응형
LIST

'개발 > Datebase' 카테고리의 다른 글

XML 파서 구문 오류  (0) 2024.11.05
MyBatis 매퍼 오류  (0) 2024.11.03
SQL 오류 노트: 오류 코드 1064  (0) 2024.10.29
JPA를 nativeQuery로 변경! (UNION 사용!)  (0) 2024.01.01
낙관적 락과 비관적 락  (0) 2023.05.18
728x90
반응형
SMALL

SQL 오류 노트: 오류 코드 1064

#### 문제 설명

SQL 오류 코드 1064는 문법 오류를 나타냅니다. 이는 SQL 쿼리의 구문이 잘못되었음을 의미합니다. 주어진 쿼리에서 `LEFT JOIN` 구문이 잘못되었습니다. `LEFT JOIN` 뒤에는 조인할 테이블을 명시해야 합니다.

#### 발생 상황

`SELECT *   FROM tb_point p  LEFT JOIN tb_point_history ph ON p.ID = ph.POINT_ID;`

위 쿼리에서 `LEFT JOIN` 구문 사용에 문제가 발생했습니다.

#### 확인 사항

- `LEFT JOIN` 뒤에 어떤 테이블을 조인할 것인지 명확히 명시해야 합니다.
- 조인이 필요 없는 경우, 조인을 사용하지 않는 것이 좋습니다.

#### 해결 방안

조인 없이 값을 삽입하는 쿼리는 다음과 같이 수정할 수 있습니다:

INSERT INTO tb_point_history   
(POINT_ID, USE_POINT, TRANSACTION_ID, RETURN_VAL, 
RESIDUAL_POINT, CREATED_AT, CHARGEBOX_ID, CHARGEPOINT_ID, CONNECTOR_ID)   
VALUES       (
#{pointId}, #{usePoint}, #{transactionId}, #{returnVal},        
(SELECT p.`POINT`         
FROM tb_point p         
WHERE p.ID = #{pointId}         
LIMIT 1),        
CURRENT_TIMESTAMP, 
#{chargeBoxId}, 
#{chargePointId}, 
#{connectorId});


- `LEFT JOIN`을 사용하지 않고, 서브쿼리를 통해 `tb_point`에서 필요한 값을 직접 조회하여 삽입합니다.

#### 주의사항

- 항상 쿼리 문법을 검토하고, 테이블과 열 이름이 올바르게 지정되었는지 확인하십시오.
- SQL 쿼리의 실행 계획을 이해하고, 필요 없는 조인 사용을 피하십시오.

728x90
반응형
LIST

+ Recent posts