49.6. 3. DataField


DataField 주석은 필드의 속성을 정의합니다. 각 데이터 필드는 레코드의 위치, 유형(문자열, int, date, …​) 및 패턴(선택사항)으로 식별됩니다.

주석 이름레코드 유형level

DataField

all

속성

매개변수 이름type정보

POS

int

필수 - 필드의 입력 위치입니다. 1에서 …​까지의 숫자 번호 - 위치 매개변수를 참조하십시오.

패턴

string

선택 사항 - 기본값 = "" - Decimal, Date 형식을 지정하는 데 사용됩니다.

길이

int

선택 사항 - 고정 길이 형식의 필드 길이를 나타냅니다.

Precision

int

선택 사항 - Decimal 수가 포맷/parsed될 때 사용할 정확도를 나타냅니다.

패턴

string

선택 사항 - default value = "" - Java 포맷터(예: SimpleDateFormat)에서 데이터를 포맷/검증하는 데 사용됩니다. 패턴을 사용하는 경우 bindy 데이터 형식으로 locale을 설정하는 것이 좋습니다. "us"와 같은 알려진 로케일로 설정하거나 "default"를 사용하여 플랫폼 기본 로케일을 사용합니다. "기본"에는 Camel 2.14/2.13.3/2.12.5가 필요합니다.

position

int

선택 사항 - CSV 생성된 CSV의 필드 위치(출력 메시지)가 입력 위치(pos)와 다른 경우 사용해야 합니다. pos 매개변수를 참조하십시오.

필수 항목

boolean

선택 사항 - 기본값 = "false"

Trim

boolean

선택 사항 - 기본값 = "false"

defaultValue

string

Camel 2.10: 선택 사항 - 기본값 = "" - 해당 CSV 필드가 비어 있거나 사용할 수 없는 경우 필드의 기본값을 정의합니다.

impliedDecimalSeparator

boolean

Camel 2.11: 선택 사항 - 기본값 = "false" - 지정된 위치에 임박한 소수점이 있는지 나타냅니다.

lengthPos

int

Camel 2.11: 선택 사항 - 이 필드에 대한 고정 길이를 정의하는 고정 길이 레코드에서 데이터 필드를 식별하는 데 사용할 수 있습니다.

조정

string

선택 사항 - default value = "R" - 텍스트를 고정 길이 필드 내에 오른쪽 또는 왼쪽에 정렬합니다. 'R' 또는 'L' 값 사용

구분 기호

string

Camel 2.11: 선택 사항 - 고정 길이 레코드 내에서 변수 길이 필드의 끝을 장식하는 데 사용할 수 있습니다.

사례 1 : pos

이 매개변수/attribute는 CSV 레코드에서 필드의 위치를 나타냅니다.

위치

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5)
    private String isinCode;

}

이 예에서 볼 수 있듯이 위치는 1에서 시작되지만 클래스 순서에서 '5'에서 계속됩니다. '2'에서 '4' 사이의 숫자는 클래스 Client에 정의되어 있습니다(다음 참조).

위치가 다른 모델 클래스에서 계속됩니다.

public class Client {

    @DataField(pos = 2)
    private String clientNr;

    @DataField(pos = 3)
    private String firstName;

    @DataField(pos = 4)
    private String lastName;
}

케이스 2 : 패턴

패턴을 사용하면 데이터 형식을 강화하거나 검증할 수 있습니다.

패턴

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5)
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;

    @DataField(pos = 7, precision = 2)
    private BigDecimal amount;

    @DataField(pos = 8)
    private String currency;

    // pattern used during parsing or when the date is created
    @DataField(pos = 9, pattern = "dd-MM-yyyy")
    private Date orderDate;
}

케이스 3 : 정확성

전체밀도는 숫자의 10진수 부분을 정의하려는 경우 유용합니다.

Precision

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @Link
    private Client client;

    @DataField(pos = 5)
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;

    @DataField(pos = 7, precision = 2)
    private BigDecimal amount;

    @DataField(pos = 8)
    private String currency;

    @DataField(pos = 9, pattern = "dd-MM-yyyy")
    private Date orderDate;
}

case 4 : 출력이 다릅니다.

position 속성은 생성된 CSV 레코드에 필드를 배치하는 방법을 bindy에게 알립니다. 기본적으로 사용되는 위치는 'pos' 속성으로 정의된 위치에 해당합니다. 위치가 다른 경우 (즉, "position"를 사용하여 이를 나타낼 수 있는 것보다 마샬링과 마샬링을 비교하는 asymetric processus가 있음을 의미합니다.

예를 들면 다음과 같습니다.

출력의 위치가 다릅니다.

@CsvRecord(separator = ",", isOrdered = true)
public class Order {

    // Positions of the fields start from 1 and not from 0

    @DataField(pos = 1, position = 11)
    private int orderNr;

    @DataField(pos = 2, position = 10)
    private String clientNr;

    @DataField(pos = 3, position = 9)
    private String firstName;

    @DataField(pos = 4, position = 8)
    private String lastName;

    @DataField(pos = 5, position = 7)
    private String instrumentCode;

    @DataField(pos = 6, position = 6)
    private String instrumentNumber;
}

주석 @DataField의 이 속성은 주석 @CsvRecord의 isOrdered = true와 함께 사용해야 합니다.

케이스 5 : 필수

필드가 필수인 경우 '필수' 속성을 true로 설정하면 됩니다.

필수 항목

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 2, required = true)
    private String clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4, required = true)
    private String lastName;
}

이 필드가 레코드에 없는 경우 오류보다 다음 정보를 사용하여 구문 분석기에 의해 발생합니다.

일부 필드가 누락됨(선택 사항 또는 필수 사항), 행 :

케이스 6 : 트리트

필드에 처리 전에 제거해야 하는 선행 및/또는 후행 공백이 있는 경우 'trim' 속성을 true로 설정하면 됩니다.

Trim

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1, trim = true)
    private int orderNr;

    @DataField(pos = 2, trim = true)
    private Integer clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4)
    private String lastName;
}

case 7 : defaultValue

필드가 정의되지 않은 경우 defaultValue 특성에 표시된 값을 사용합니다.

기본값

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 2)
    private Integer clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4, defaultValue = "Barin")
    private String lastName;
}

이 속성은 선택적 필드에만 적용됩니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.