Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zapisać UUID jako plik binarny(16) w java?

Spróbuj zapisać go jako bajty:

UUID uuid = UUID.randomUUID();
byte[] uuidBytes = new byte[16];
ByteBuffer.wrap(uuidBytes)
        .order(ByteOrder.BIG_ENDIAN)
        .putLong(uuid.getMostSignificantBits())
        .putLong(uuid.getLeastSignificantBits());

con.createQuery("INSERT INTO TestTable(ID, Name) VALUES(:id, :name)")
    .addParameter("id", uuidBytes)
    .addParameter("name", "test1").executeUpdate();

Trochę wyjaśnienia:twoja tabela używa BINARY(16), więc serializacja UUID jako jego surowych bajtów jest naprawdę prostym podejściem. UUID są zasadniczo 128-bitowymi intami z kilkoma zarezerwowanymi bitami, więc ten kod zapisuje je jako big-endian 128-bit int. ByteBuffer to prosty sposób na przekształcenie dwóch długich w tablicę bajtów.

Teraz w praktyce cały wysiłek związany z konwersją i bóle głowy nie będą warte 20 bajtów zaoszczędzonych na wiersz.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Policz liczbę dopasowań LIKE na wpis

  2. skarpetki proxy mysql

  3. MySQL/Hibernacja — jak debugować połączenie w puli MySQL, które ciągle się zrywa?

  4. przypisz wszystkie wyniki while do zmiennej

  5. Jak wymusić ograniczenie klucza obcego z niepowiązanych tabel w Mysql?