JdbcToJavaUtil.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package com.xjrsoft.common.utils;
  2. import cn.hutool.core.util.StrUtil;
  3. import cn.hutool.db.meta.Column;
  4. import cn.hutool.db.meta.JdbcType;
  5. import org.apache.commons.lang3.ObjectUtils;
  6. /**
  7. * @Author: tzx
  8. * @Date: 2022/4/25 15:37
  9. */
  10. public class JdbcToJavaUtil {
  11. /**
  12. * 根据jdbc类型 返回java类型字符串
  13. */
  14. public static String getClassName(Column column) {
  15. JdbcType type = ObjectUtils.defaultIfNull(column.getTypeEnum(), JdbcType.NULL);
  16. switch (type) {
  17. case BIT:
  18. return "Boolean";
  19. case TINYINT:
  20. return "Byte";
  21. case SMALLINT:
  22. return "Short";
  23. case INTEGER:
  24. return "Integer";
  25. case BIGINT:
  26. return "Long";
  27. case FLOAT:
  28. return "Float";
  29. case REAL:
  30. case DOUBLE:
  31. return "Double";
  32. case NUMERIC:
  33. case DECIMAL:
  34. if (column.getDigit() == 0) {
  35. if (column.getSize() > 11) {
  36. return "Long";
  37. } else {
  38. return "Integer";
  39. }
  40. }
  41. return "BigDecimal";
  42. case CHAR:
  43. case VARCHAR:
  44. case LONGVARCHAR:
  45. case NVARCHAR:
  46. return "String";
  47. case DATE:
  48. case TIMESTAMP:
  49. return "LocalDateTime";
  50. case TIME:
  51. return "LocalTime";
  52. case BINARY:
  53. case CLOB:
  54. case BLOB:
  55. case VARBINARY:
  56. case LONGVARBINARY:
  57. return "Byte[]";
  58. case DATETIMEOFFSET:
  59. default:
  60. if (StrUtil.equalsIgnoreCase(column.getTypeName(), "NVARCHAR2")
  61. || StrUtil.equalsIgnoreCase(column.getTypeName(), "NCLOB")) {
  62. return "String";
  63. } else if (StrUtil.startWithIgnoreCase(column.getTypeName(), "INTERVAL DAY")) {
  64. return "LocalTime";
  65. }
  66. return "Object";
  67. }
  68. }
  69. /**
  70. * 根据jdbc类型 返回java类型字符串(自定义日期)
  71. */
  72. public static String getClassName(JdbcType type, int dateType) {
  73. switch (type) {
  74. case BIT:
  75. return "Boolean";
  76. case TINYINT:
  77. return "Byte";
  78. case SMALLINT:
  79. return "Short";
  80. case INTEGER:
  81. return "Integer";
  82. case BIGINT:
  83. return "Long";
  84. case FLOAT:
  85. return "Float";
  86. case REAL:
  87. case DOUBLE:
  88. return "Double";
  89. case NUMERIC:
  90. case DECIMAL:
  91. return "BigDecimal";
  92. case CHAR:
  93. case VARCHAR:
  94. case LONGVARCHAR:
  95. return "String";
  96. case DATE:
  97. case TIMESTAMP:
  98. if (dateType == 0) {
  99. return "LocalDateTime";
  100. } else {
  101. return "Date";
  102. }
  103. case TIME:
  104. return "LocalTime";
  105. case BINARY:
  106. case VARBINARY:
  107. case LONGVARBINARY:
  108. return "Byte[]";
  109. case DATETIMEOFFSET:
  110. default:
  111. return "Object";
  112. }
  113. }
  114. }