MySQL数据类型与Java数据类型的映射

发布于:2025-04-06 ⋅ 阅读:(12) ⋅ 点赞:(0)
整数类型
  • tinyint

    • 示例:假设is_activetinyint(1)用于表示布尔值。
      boolean is_active = rs.getboolean("is_active");
    • 或者作为字节值:
      byte value = rs.getbyte("column_name");
  • smallint

    • 示例:
      short small_value = rs.getshort("small_value");
  • int, integer

    • 示例:
      int int_value = rs.getint("int_value");
  • bigint

    • 示例:
      long big_value = rs.getlong("big_value");
浮点和固定点数字
  • float

    • 示例:
      float float_value = rs.getfloat("float_value");
  • double, double precision

    • 示例:
      double double_value = rs.getdouble("double_value");
  • decimal, numeric

    • 示例:保持高精度计算:
      bigdecimal decimal_value = rs.getbigdecimal("decimal_value");
字符串
  • char, varchar

    • 示例:
      string string_value = rs.getstring("string_value");
  • text, tinytext, mediumtext, longtext

    • 示例:
      string large_text = rs.getstring("large_text");
日期和时间
  • date

    • 示例:使用java 8的localdate
      localdate date = rs.getobject("date_column", localdate.class);
  • time

    • 示例:使用java 8的localtime
      localtime time = rs.getobject("time_column", localtime.class);
  • datetime, timestamp

    • 示例:使用java 8的localdatetime
      localdatetime datetime = rs.getobject("datetime_column", localdatetime.class);
二进制数据
  • blob, tinyblob, mediumblob, longblob
    • 示例:获取为字节数组:
      byte[] blob_data = rs.getbytes("blob_column");
    • 或者使用inputstream
      inputstream blob_stream = rs.getbinarystream("blob_column");
其他类型
  • bit

    • 示例:对于单个位值:
      boolean bit_value = rs.getboolean("bit_column");
    • 对于多个位:
      byte[] bits = rs.getbytes("bits_column");
  • enum

    • 示例:通常映射为字符串:
      string enum_value = rs.getstring("enum_column");
  • set

    • 示例:同样映射为字符串,然后解析:
      string set_values = rs.getstring("set_column");

处理null值

在从数据库读取可能包含null值的数据时,应该特别小心。例如:

integer nullable_int = rs.wasnull() ? null : rs.getint("nullable_int_column");

这确保了当数据库中的值为null时,java对象也会被设置为null,而不是默认值。

注意事项

  • 时区问题:处理timestampdatetime类型时,注意时区的影响。可以考虑使用zoneddatetime来处理不同地区的时区差异。
  • 精度丢失:对于需要精确计算的情况(如货币),避免使用浮点类型,而是使用bigdecimal
  • 性能优化:当处理大量数据时,适当选择流式处理或其他优化手段以提高效率。例如,使用批量更新或批处理插入操作来减少数据库交互次数。