ORM 사양


1. [필수] 테이블 쿼리에서는 쿼리의 필드 목록으로 *를 사용하지 마세요. 어떤 필드가 필요한지 명확하게 명시해야 합니다.

지침: 1) 쿼리 분석기 구문 분석 비용을 늘립니다. 2) 필드를 추가하거나 빼는 것은 resultMap 구성과 일치하지 않을 수 있습니다.


2. [필수] POJO 클래스의 부울 속성은 is로 추가할 수 없으며, 데이터베이스 필드는 is _로 추가해야 합니다. resultMap에서 필드와 속성 간의 매핑을 수행해야 합니다.

참고: POJO 클래스 정의 및 데이터베이스 필드 정의를 참조하세요. sql.xml에 매핑을 추가해야 합니다.


3. [필수] resultClass를 반환 매개변수로 사용하지 마세요. 모든 클래스 속성 이름이 데이터베이스 필드와 일대일로 일치하더라도 반대로 정의해야 합니다. 각 테이블에는 해당하는 항목이 하나씩 있어야 합니다. 그것에.

지침:

손쉬운 유지 관리를 위해 DO 클래스에서 필드를 분리하도록 매핑 관계를 구성합니다.


4. [필수] xml 구성에서 매개변수 사용에 주의하세요: #{}, # param # ${}를 사용하지 마세요.


5. [필수] iBATIS와 함께 제공되는 queryForList(StringstatementName, int start, int size)는 권장되지 않습니다.

설명: 구현 방법은 데이터베이스에서statementName에 해당하는 SQL 문의 모든 레코드를 가져온 다음 subList

를 통해 시작 및 크기의 하위 집합을 가져오는 것입니다. 이 때문에 OOM이 온라인에 나타났습니다.

긍정적 예: Introduce #start#, #size#

Map<String, Object> map = new HashMap<String, Object>();
map.put("start", start);
map.put("size", size);

6 [필수] sqlmap.xml에 설정된 쿼리 결과의 출력으로 HashMap 및 Hashtable을 직접 사용하는 것은 허용되지 않습니다.


7. [필수] 데이터 테이블 레코드를 업데이트할 때 레코드의 해당 gmt_modified 필드 값도 현재 시간으로 업데이트해야 합니다.


8. 크고 포괄적인 데이터 업데이트 인터페이스를 작성하지 마세요. POJO 클래스로 전달하세요. 자체 대상 업데이트 세그먼트인지 여부에 관계없이 업데이트 테이블은 c1=value1,c2=value2입니다. ,c3=value3; 이것은 잘못된 것입니다. SQL


을 실행할 때 수정되지 않은 필드를 업데이트하지 마십시오. 첫째, 오류가 발생하기 쉽고 셋째, binlog가 저장 공간을 늘립니다.

9. [참고] @ Transactional 거래를 남용하지 마세요. 트랜잭션은 데이터베이스의 QPS에 영향을 미칩니다. 또한 트랜잭션이 사용되는 경우 캐시 롤백, 검색 엔진 롤백, 메시지 보상, 통계 수정 등을 포함한 다양한 롤백 솔루션을 고려해야 합니다.

10. [참고] < isEqual >의 CompareValue는 속성 값과 비교되는 상수로, < isNotEmpty > null이 아닙니다. < isNotNull >는 값이 null이 아닐 때 실행됨을 의미합니다.