55.2.3. 3. DataField


DataField 주석은 필드의 속성을 정의합니다. 각 datafield는 레코드, 유형(string, int, date, …​) 및 선택적으로 패턴의 위치에 의해 식별됩니다.

주석 이름레코드 유형level

DataField

all

속성

매개변수 이름유형필수 항목기본값정보

POS

int

 

입력 레코드의 데이터 위치는 1(필수)에서 시작해야 합니다. position 매개변수를 참조하십시오.

align

문자열

 

R

텍스트를 오른쪽 또는 왼쪽에 정렬합니다. 값 <tt>R</tt> 또는 <tt>L</tt>를 사용합니다.

clip

boolean

 

false

고정 길이를 사용할 때 허용되는 길이를 초과하는 경우 필드의 데이터를 클리핑하는 것을 나타냅니다.Indicates to clip data in the field if it exceeds the allowed length when using fixed length.

columnName

문자열

  

헤더 열 이름(선택 사항). 속성 이름을 기본값으로 사용합니다. CsvRecordgenerateHeaderColumns = true인 경우에만 적용됩니다.

decimalSeparator

문자열

  

BigDecimal 숫자와 함께 사용할 10진수 분리기

defaultValue

문자열

  

값이 설정되지 않은 경우 필드의 기본값

구분 기호

문자열

  

필드 길이가 변수인 경우 사용할 선택적 구분 기호

groupingSeparator

문자열

  

예를 들어 123,456.789와 같이 그룹화된 번호를 포맷/수화하려는 경우 BigDecimal 번호와 함께 사용할 분리기 그룹화

impliedDecimalSeparator

boolean

 

false

지정된 위치에 있는 소수점이 지정되었는지 여부를 나타냅니다.Indicates if there is a decimal point implied at a specified location.

길이

int

 

0

레코드가 고정된 길이로 설정된 경우 데이터 블록의 길이(문자 수)

lengthPos

int

 

0

이 필드에 대해 예상되는 고정 길이를 정의하는 레코드의 데이터 필드를 식별합니다.

method

문자열

  

DataField에 이러한 사용자 지정을 적용하도록 호출할 메서드 이름입니다. 이는 datafield 자체의 메서드여야 합니다. 또는 클래스 메서드의 정적 정규화된 이름을 제공해야 합니다. 예를 들어 단위 테스트 org.apache.camel.dataformat.dataformat.csv.BindySimpleCsvFunctionWithExternalMethodTest.replaceToBar를 참조하십시오.

name

문자열

  

필드 이름(선택 사항)

paddingChar

char

  

레코드가 고정된 길이로 설정된 경우 패딩할 char

패턴

문자열

  

Java formatter(SimpleDateFormat by example)에서 데이터(선택 사항)를 변환하는 데 사용하는 패턴입니다. 패턴을 사용하는 경우 bindy 데이터 형식에 로케일을 설정하는 것이 좋습니다. "us"와 같은 알려진 로케일로 설정하거나 플랫폼 기본 로케일을 사용하려면 "default"를 사용합니다.

위치

int

 

0

생성된 출력 메시지의 필드 위치(1에서 시작). CSV 생성(출력 메시지)의 필드 위치를 입력 위치(의 경우)와 비교해야 하는 경우 사용해야 합니다. pos 매개변수를 참조하십시오.

Precision

int

 

0

생성할 \{@link java.math.Big decimal} 숫자의 전체 자릿수

필수 항목

boolean

 

false

필드가 필수인지 여부를 나타냅니다.

rounding

문자열

 

클ILING

BigDecimal 값을 반올림/축소하는 데 사용할 라운드 모드: UP, DOWN, CEILING, FLOOR, HALF_UP, HALF_DOWN,HALF_EVEN, UNNECESSARY e.g: 번호 = 123456.789, Precision = 2, rounding = CEILING:5679.

timezone

문자열

  

사용할 시간대입니다.

trim

boolean

 

false

값을 트리밍해야 하는지 여부를 나타냅니다.Indicates if the value should be trimmed.

케이스 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 사이의 숫자는 클래스 클라이언트에 정의되어 있습니다 (아래 참조).

position은 다른 모델 클래스에서 계속됩니다.

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: precision

전체 자릿수는 숫자의 10진수 부분을 정의하려는 경우에 유용합니다.The precision is helpful when you want to define the decimal part of your number.

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;
}

케이스 4: Position은 출력에서 다릅니다.

position 속성은 생성된 CSV 레코드에 필드를 배치하는 방법을 bindy에 알립니다. 기본적으로 사용되는 위치는 pos 속성으로 정의된 위치에 해당합니다. 위치가 다르면 (즉, 무형에서 마샬링에서 마샬링을 비교하는 천문 프로세스가 있는 경우, 위치 를 사용하여 이를 표시할 수 있습니다.

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

위치가 출력에 따라 다릅니다.

@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 의 attribute 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;
}

이 필드가 레코드에 없으면 다음 정보를 사용하여 구문 분석기에 의해 오류가 발생합니다.If this field is not present in the record, then an error will be raised by the parser with the following information:

Some fields are missing (optional or mandatory), line :

case 6 : trim

필드에 처리되기 전에 제거해야 하는 선행 및/또는 후행 공백이 있는 경우 속성 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;
}

case 8 : columnName

@CsvRecord 주석이 generateHeaderColumns = true 인 경우에만 속성의 열 이름을 지정합니다.

열 이름

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

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5, columnName = "ISIN")
    private String isinCode;

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

이 속성은 선택적 필드에만 적용할 수 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.