Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách lưu UUID dưới dạng nhị phân (16) trong java

Hãy thử lưu trữ nó dưới dạng 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();

Giải thích một chút:bảng của bạn đang sử dụng BINARY (16), vì vậy việc tuần tự hóa UUID dưới dạng các byte thô của nó là một cách tiếp cận thực sự đơn giản. UUID về cơ bản là các int 128 bit với một vài bit dành riêng, vì vậy mã này viết nó ra dưới dạng một int lớn 128 bit. ByteBuffer chỉ là một cách dễ dàng để biến hai độ dài thành một mảng byte.

Hiện tại trong thực tế, tất cả nỗ lực chuyển đổi và sự đau đầu sẽ không xứng đáng với 20 byte bạn tiết kiệm được cho mỗi hàng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể tìm thấy tệp mysql-connector-java-5.1.13-bin.jar

  2. Tiếp tục truy vấn SQL ngay cả khi có lỗi trong bàn làm việc MySQL

  3. Amazon EC2, bắt đầu hủy bỏ mysql vì InnoDB:mmap (x byte) không thành công; errno 12

  4. Tính thực tiễn của nhiều cơ sở dữ liệu cho mỗi khách hàng so với một cơ sở dữ liệu

  5. thiết kế bảng + câu hỏi SQL