Java 문자열로 작성된 SQL 문이있는 Java 코드가 있습니다 (OR / M 불꽃은 피하십시오. 내장 SQL은 내 결정이 아닙니다).
유지 관리를 쉽게하기 위해 SQL 문을 의미 적으로 여러 줄의 코드로 연결된 여러 문자열로 나누었습니다. 따라서 다음과 같은 대신 :
String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";
나는 다음과 같은 것을 가지고있다 :
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
이 스타일을 사용하면 특히 큰 쿼리의 경우 SQL을 훨씬 쉽게 읽고 유지 관리 할 수 있습니다 (IMHO). 예를 들어, 편집기를 “덮어 쓰기”모드로 설정하고 텍스트를 제자리에서 상당히 쉽게 수정할 수 있습니다.
이 문제는 특정 SQL 예를 넘어 일반화됩니다. 세로 형식, 특히 표 형식으로 작성된 코드는 예쁜 프린터에 의해 손상 될 수 있습니다.
이제 일부 프로젝트 멤버는 Eclipse 편집기를 사용하고 전체 소스 파일을 형식화 할 때 시맨틱 형식이 종종 소멸됩니다.
형식화와 관련하여 Eclipse에 특정 소스 행을 무시하도록 지시하는 방법이 있습니까?
Eclipse 포맷터를 토글하는 특수 주석과 같은 것을 찾고 있습니다. 이상적으로 이러한 주석은 원하는대로 구성 할 수 있으며 다른 포매터도이를 존중하도록 프로그래밍 할 수 있습니다.
// STOP-ECLIPSE-FORMATTING
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
// START-ECLIPSE-FORMATTING
물론, 하나의 “솔루션은”우리 팀 구성원이 같은 일부 외부 포맷을 표준화하는 것입니다 고물 또는 JIndent ,하지만이 질문은 (또한이 프로젝트에 대한 나의 결정)에 대해 무엇 아니다 : 내가 특별히 방법을 찾고 있어요 임시로 Eclipse 포맷터를 사용하지 마십시오.
이상적으로 솔루션을 사용하면 Eclipse를 사용하여 팀 구성원이 IDE 재구성을 수행하지 않아도 Eclipse 포매터에 대한 지침을 삽입 할 수 있습니다 (포맷터 무의미한 명령 주석 선택 가능 : STOP-ECLIPSE-FORMATTING
→ STOP-FORMATTING
).
답변
Eclipse 3.6에서는 다음과 같은 특수 주석을 배치하여 형식화를 해제 할 수 있습니다.
// @formatter:off
...
// @formatter:on
Eclipse 환경 설정에서 켜기 / 끄기 기능을 “켜기”로 설정해야 Java > Code Style > Formatter합니다. 에 클릭 Edit, Off/On Tags활성화 Enable Off/On tags.
환경 설정에서 마술 문자열을 변경할 수도 있습니다 . 여기서 Eclipse 3.6 문서를 확인하십시오 .
추가 정보
Java
>
Code Style
>
Formatter
>
Edit
>
Off/On Tags
이 환경 설정을 사용하면 포맷터를 비활성화 할 태그 하나와 포맷터를 활성화 할 태그 하나를 정의 할 수 있습니다 (포맷터 프로파일의 Off / On Tags 탭 참조).
또한 플래그를 활성화해야합니다 Java Formatting
답변
포맷터의 Eclipse 3.5 M4의 AFAIK에는 “줄 바꾸기 안 함”옵션이있어 사용자 줄 바꿈을 유지합니다. 어쩌면 그것은 당신이 원하는 것을 할 것입니다.
그렇지 않으면이 추악한 해킹이 있습니다.
String query = //
"SELECT FOO, BAR, BAZ" + //
" FROM ABC" + //
" WHERE BAR > 4";
답변
SO에 대한이 답변을 참조하십시오 .
특정 블록 주석의 서식을 억제하는 데 사용할 수있는 또 다른 솔루션이 있습니다. 사용 /*-
블록 주석의 시작에서 (하이픈 주), 당신은 파일의 나머지를 포맷하면 포맷이 영향을받지 않습니다.
/*-
* Here is a block comment with some very special
* formatting that I want indent(1) to ignore.
*
* one
* two
* three
*/
출처 : Oracle의 설명서 .
답변
서식을 끄는 대신 이미 줄 바꿈 된 줄을 결합하지 않도록 구성 할 수 있습니다. 지터의 응답과 유사하게 다음은 Eclipse STS입니다.
속성 → Java 코드 스타일 → 포맷터 → 프로젝트 특정 설정 사용 또는 작업 공간 설정 구성 → 편집 → 줄 바꿈 (탭) → “이미 줄 바꿈 된 줄을 조인하지 마십시오”확인
저장하고 적용하십시오.
답변
포맷터 태그를 추가하는 기능을 설정해야합니다. 메뉴 표시 줄에서 다음으로 이동하십시오.
Windows
→
Preferences
Java
→
Code Style
→
Formatter
언론 Edit버튼을 누릅니다. 마지막 탭을 선택하십시오. 켜기 / 끄기 상자를 확인하고 확인란을 사용하여 활성화하십시오.
답변
줄의 시작 부분에 더하기 부호를 넣으면 형식이 다릅니다.
String query =
"SELECT FOO, BAR, BAZ"
+ " FROM ABC"
+ " WHERE BAR > 4";
답변
포맷터가 SQL 문자열 들여 쓰기를 엉망으로 만드는 것을 피하기 위해 고정 너비 문자열 부분 (공백으로 채워짐)을 사용하고 있습니다. 이것은 혼합 된 결과를 제공하며 SQL에서와 같이 공백이 무시되지 않지만 도움이 될 수있는 곳에서는 작동하지 않습니다.
final String sql = "SELECT v.value FROM properties p "
+ "JOIN property_values v ON p.property_id = v.property_id "
+ "WHERE p.product_id = ? "
+ "AND v.value IS NOT NULL ";