簡體   English   中英

使用jOOQ,如何通過名稱獲取列的數據類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM