49.6. 3. DataField
DataField 주석은 필드의 속성을 정의합니다. 각 datafield는 레코드의 위치, 유형(string, int, date, …) 및 선택적으로 패턴으로 식별됩니다.
주석 이름 | 레코드 유형 | level |
---|---|---|
DataField | all | 속성 |
매개변수 이름 | type | 정보 |
---|---|---|
POS | int | 필수 - 필드의 입력 위치. 1에서 … 사이의 숫자 번호 - 위치 매개 변수를 참조하십시오. |
패턴 | string | 선택 사항 - 기본값 = "" - 은 Decimal, Date를 포맷하는 데 사용됩니다. |
길이 | int | 선택 사항 - 고정 길이 형식의 필드 길이를 나타냅니다. optional - represents the length of the field for fixed length format. |
Precision | int | 선택 사항 - Decimal 숫자를 포맷/분석할 때 사용할 전체 자릿수를 나타냅니다. optional - represents the precision to be used when the Decimal number will be formatted/parsed. |
패턴 | string | 선택 사항 - default value = "" - Java formatter(예:SimpleDateFormat by example)에서 포맷/유효 데이터를 포맷하는 데 사용됩니다. 패턴을 사용하는 경우 bindy 데이터 형식에 로케일을 설정하는 것이 좋습니다. "us"와 같은 알려진 로케일로 설정하거나 플랫폼 기본 로케일을 사용하려면 "default"를 사용합니다. "default"에는 Camel 2.14/2.13.3/2.12.5가 필요합니다. |
위치 | int | 선택 사항 - CSV 생성(출력 메시지)의 필드 위치가 입력 위치와 비교해야 하는 경우 사용해야 합니다. pos 매개변수를 참조하십시오. |
필수 항목 | boolean | optional - default value = "false" |
trim | boolean | optional - default value = "false" |
defaultValue | string | Camel 2.10: 선택 사항 - 기본값 = "" - 각 CSV 필드가 비어 있을 때 필드의 기본값을 정의합니다. |
impliedDecimalSeparator | boolean | Camel 2.11: 선택 사항 - 기본값 = "false" - 지정된 위치에 임차된 소수점이 있는지 여부를 나타냅니다. |
lengthPos | int | Camel 2.11: 선택 사항 - 이 필드에 대한 고정 길이를 정의하는 고정 길이 레코드의 데이터 필드를 식별하는 데 사용할 수 있습니다. |
align | string | 선택 사항 - 기본값 = "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'까지의 숫자는 클래스 클라이언트에 정의됩니다(아래 참조).
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 : 필수
필드가 필수인 경우 'required' 특성을 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, than an error will be raised by the parser with the following information:
일부 필드는 누락(선택 사항 또는 필수) 라인입니다.
case 6 : trim
필드에 처리 전에 제거해야 하는 선행 및/또는 후행 공백이 있는 경우 true로 설정된 'trim' 특성을 사용합니다.
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; }
이 속성은 선택적 필드에만 적용할 수 있습니다.