Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menyimpan UUID sebagai biner (16) di java

Coba simpan sebagai byte:

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();

Sedikit penjelasan:tabel Anda menggunakan BINARY (16), jadi membuat serial UUID sebagai byte mentahnya adalah pendekatan yang sangat mudah. UUID pada dasarnya adalah int 128-bit dengan beberapa bit yang dicadangkan, jadi kode ini menuliskannya sebagai int 128-bit big-endian. ByteBuffer hanyalah cara mudah untuk mengubah dua long menjadi array byte.

Sekarang dalam praktiknya, semua upaya konversi dan sakit kepala tidak akan sebanding dengan 20 byte yang Anda hemat per baris.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. codeigniter catatan aktif bergabung dengan menggunakan?

  2. mendapatkan mysql_insert_id() saat menggunakan ON DUPLICATE KEY UPDATE dengan PHP

  3. Kembalikan hanya satu baris dari tabel paling kanan untuk setiap baris di tabel paling kiri

  4. Aplikasi Android Xamarin dengan database MySql/Sql online

  5. Memilih nilai yang dikelompokkan ke pengidentifikasi tertentu