[英]Using jOOQ, how to get data type of a column by name
我正在嘗試通過名稱獲取字段的數據類型。 我發現方法getDataType
可以很好地工作,如果我知道該字段(例如MY_TABLE.MY_COLUMN_NAME.getDataType())。
但是我想通過字段名稱(例如aDSL.fieldByName("my_column_name").getDataType()
)找到它,其中aDSL是DSLContext
類型。
我之所以這樣,是因為我正在基於結果集使用的集合上構建通用的排序函數,並且我不希望不依賴開發人員為我的比較器傳遞正確的數據類型。
有什么建議么?
這些類型可通過以下方式從“ Result
或“ Record
:
Class<?> type1 = result.field("MY_COLUMN").getType()
Class<?> type2 = record.field("MY_COLUMN").getType()
看到:
但是大多數標准數據類型仍然是Comparable
的( 我正在看你的答案的用例 ),所以為什么不只使用Java 8的新Comparator.naturalOrder()
甚至可能使用Comparator.reverseOrder()
我正在構建一個自定義的Comparator
(我將結果集轉換為列表,存儲了Record以及其他內容,以便可以對其進行各種操作,排序,過濾等)。 為了構建比較器,我需要輸入以下類型:
switch (R1.dataRecord.getValue( element ).getClass().toString())
{
case "class java.lang.Long":
compareResult = ( (Long) R1.dataRecord.getValue( element ) ).compareTo( (Long) R2.dataRecord.getValue( element ) );
if (compareResult != 0)
return compareResult * compareOrder;
break;
case "class java.lang.String":
compareResult = ( (String) R1.dataRecord.getValue( element ) ).compareTo( (String) R2.dataRecord.getValue( element ) );
if (compareResult != 0)
return compareResult * compareOrder;
break;
... etc ...
}
我能夠從記錄中獲取類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.