DataField 주석은 필드의 속성을 정의합니다. 각 데이터 필드는 레코드의 위치, 유형(문자열, int, date, …) 및 패턴(선택사항)으로 식별됩니다.
Expand
주석 이름
레코드 유형
level
DataField
all
속성
Expand
매개변수 이름
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;
}
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@DataField(pos = 5)
private String isinCode;
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
이 예에서 볼 수 있듯이 위치는 1에서 시작되지만 클래스 순서에서 '5'에서 계속됩니다. '2'에서 '4' 사이의 숫자는 클래스 Client에 정의되어 있습니다(다음 참조).
Copy to ClipboardCopied!Toggle word wrapToggle overflow
케이스 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;
}
@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;
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Copy to ClipboardCopied!Toggle word wrapToggle overflow
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;
}
@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;
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
주석 @DataField의 이 속성은 주석 @CsvRecord의 isOrdered = true와 함께 사용해야 합니다.