Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да запишете UUID като двоичен(16) в java

Опитайте да го съхраните като байтове:

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

Малко обяснение:вашата таблица използва BINARY(16), така че сериализирането на UUID като сурови байтове е наистина лесен подход. UUID по същество са 128-битови int с няколко запазени бита, така че този код го изписва като 128-битово int с голям ендиан. ByteBuffer е просто лесен начин да превърнете две дълги в масив от байтове.

Сега на практика всички усилия за преобразуване и главоболия няма да струват 20-те байта, които спестявате на ред.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да форматирате низове на SQL IN клауза с Python

  2. Не може да се извлекат редове в sql оператор

  3. процентил по COUNT(DISTINCT) с корелиран WHERE работи само с изглед (или без DISTINCT)

  4. PHP и MySQL:Подредете по най-новата дата и ограничение 10

  5. Как да вмъкнете данни от една таблица на база данни в друга таблица на база данни в Mysql