Trong hướng dẫn này, bạn có thể tìm hiểu về các codec và các lớp hỗ trợ xử lý mã hóa và giải mã các đối tượng Java đến và từ dữ liệu BSON trong trình điều khiển Java MongoDB. Trừu tượng
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 cho phép bạn ánh xạ bất kỳ loại Java nào thành loại BSON tương ứng. Bạn có thể sử dụng điều này để ánh xạ các đối tượng miền của mình trực tiếp đến và từ BSON thay vì sử dụng một đối tượng dựa trên bản đồ trung gian như public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
5 hoặc public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
6.Codecs and the supporting classes that handle the encoding and decoding of Java objects to and from BSON data in the MongoDB Java driver. The public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 abstraction allows you to map any Java type to a corresponding BSON type. You can use this to map your domain objects directly to and from BSON instead of using an intermediate map-based object such as public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
5 or public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
6.Bạn có thể tìm hiểu cách chỉ định logic mã hóa và giải mã tùy chỉnh bằng cách sử dụng các triển khai ví dụ
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 và xem trong các phần sau:Codec
Codecregologistry
CodecProvider
Ví dụ codec tùy chỉnh
Nếu bạn đang tùy chỉnh logic mã hóa và giải mã cho các đối tượng Java cũ đơn giản [POJOS], hãy đọc hướng dẫn của chúng tôi về tùy chỉnh POJO.
Giao diện
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 chứa các phương thức trừu tượng để tuần tự hóa và giảm dần các đối tượng Java thành dữ liệu BSON. Bạn có thể xác định logic chuyển đổi của mình giữa BSON và đối tượng Java của bạn trong việc triển khai giao diện này.Để thực hiện giao diện
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4, hãy ghi đè các phương thức trừu tượng CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
0, CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
1 và CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
2.Phương thức
CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
0 yêu cầu các tham số sau:
CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]]; | Một thể hiện của một lớp thực hiện CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]]; CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]]; |
CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]]; | Dữ liệu mà việc triển khai của bạn mã hóa. Loại phải khớp với biến loại được gán cho triển khai của bạn. |
CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]]; | Chứa thông tin meta về dữ liệu đối tượng Java mà nó mã hóa cho BSON bao gồm việc lưu trữ giá trị hiện tại trong bộ sưu tập MongoDB. |
Phương pháp này sử dụng thể hiện
CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
5 để gửi giá trị được mã hóa đến MongoDB và không trả về một giá trị.Phương thức
CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
1 trả về thể hiện đối tượng Java của bạn với giá trị từ dữ liệu BSON. Phương pháp này yêu cầu các tham số sau:
| Một thể hiện của một lớp thực hiện CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]]; CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]]; | ||
| Dữ liệu mà việc triển khai của bạn mã hóa. Loại phải khớp với biến loại được gán cho triển khai của bạn. |
Chứa thông tin meta về dữ liệu đối tượng Java mà nó mã hóa cho BSON bao gồm việc lưu trữ giá trị hiện tại trong bộ sưu tập MongoDB.
Phương pháp này sử dụng thể hiện
CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
5 để gửi giá trị được mã hóa đến MongoDB và không trả về một giá trị.Phương thức
CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
1 trả về thể hiện đối tượng Java của bạn với giá trị từ dữ liệu BSON. Phương pháp này yêu cầu các tham số sau:public enum PowerStatus { ON, OFF }
Một thể hiện của một lớp thực hiện
Codec powerStatusCodec = codecRegistry.get[String.class]; Codec integerCodec = codecRegistry.get[Integer.class];
2, một loại giao diện hiển thị các phương thức để đọc tài liệu BSON. Ví dụ, việc triển khai Codec powerStatusCodec = codecRegistry.get[String.class]; Codec integerCodec = codecRegistry.get[Integer.class];
3 đọc từ một luồng dữ liệu nhị phân.public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
Chứa thông tin về dữ liệu BSON mà nó giải mã cho một đối tượng Java.CodecRegistry section of this page to see how you can include your
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4.Phương pháp
CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
2 trả về một thể hiện lớp của lớp Java vì Java không thể suy ra loại do xóa loại.Codec
Xem các ví dụ mã sau đây cho thấy cách bạn có thể thực hiện một tùy chỉnh
4.public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } } Enum
7 chứa các giá trị "BẬT" và "TẮT" để biểu thị các trạng thái của một công tắc điện.Codec powerStatusCodec = codecRegistry.get[String.class]; Codec integerCodec = codecRegistry.get[Integer.class]; Lớp
8 thực hiệnCodec powerStatusCodec = codecRegistry.get[String.class]; Codec integerCodec = codecRegistry.get[Integer.class];
4 để chuyển đổi các giá trị Javapublic class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
0 thành các giá trị BSON boolean tương ứng. Phương pháppublic class MonolightCodecProvider implements CodecProvider { public MonolightCodecProvider[] {} @Override @SuppressWarnings["unchecked"] public Codec get[Class clazz, CodecRegistry registry] { if [clazz == Monolight.class] { return [Codec] new MonolightCodec[registry]; } // return null when not a provider for the requested class return null; } }
0 chuyển đổiCodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
7 thành BSON boolean và phương phápCodec powerStatusCodec = codecRegistry.get[String.class]; Codec integerCodec = codecRegistry.get[Integer.class];
1 thực hiện chuyển đổi theo hướng ngược lại.CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
Bạn có thể thêm một thể hiện của
8 vàoCodec powerStatusCodec = codecRegistry.get[String.class]; Codec integerCodec = codecRegistry.get[Integer.class];
5 của bạn có chứa ánh xạ giữa loại đối tượngpublic class MonolightCodecProvider implements CodecProvider { public MonolightCodecProvider[] {} @Override @SuppressWarnings["unchecked"] public Codec get[Class clazz, CodecRegistry registry] { if [clazz == Monolight.class] { return [Codec] new MonolightCodec[registry]; } // return null when not a provider for the requested class return null; } }
4 và đối tượng Java mà nó áp dụng. Tiếp tục đến phần Codecregistry của trang này để xem cách bạn có thể bao gồmpublic class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 của mình.public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } } Để biết thêm thông tin về các lớp và giao diện trong phần này, hãy xem tài liệu API sau:
Bsonwriter
Bsonbinarywriter
3CodecRegistry newRegistry = CodecRegistries.fromRegistries[ CodecRegistries.fromCodecs[new MyEnumCodec[]], MongoClientSettings.getDefaultCodecRegistry[]];
4CodecRegistry newRegistry = CodecRegistries.fromRegistries[ CodecRegistries.fromCodecs[new MyEnumCodec[]], MongoClientSettings.getDefaultCodecRegistry[]];
5CodecRegistry newRegistry = CodecRegistries.fromRegistries[ CodecRegistries.fromCodecs[new MyEnumCodec[]], MongoClientSettings.getDefaultCodecRegistry[]];
EncoderContext
CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
BsonReader
DecoderContext
BsonBinaryReader, our sample
4 that converts certain Java strings to BSON booleans.public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
Một
public class MonolightCodecProvider implements CodecProvider { public MonolightCodecProvider[] {} @Override @SuppressWarnings["unchecked"] public Codec get[Class clazz, CodecRegistry registry] { if [clazz == Monolight.class] { return [Codec] new MonolightCodec[registry]; } // return null when not a provider for the requested class return null; } }
5 là một bộ sưu tập bất biến của các trường hợp public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 mã hóa và giải mã các lớp Java mà họ chỉ định. Bạn có thể sử dụng bất kỳ phương pháp nhà máy tĩnh CodecRegistry newRegistry = CodecRegistries.fromRegistries[ CodecRegistries.fromCodecs[new MyEnumCodec[]], MongoClientSettings.getDefaultCodecRegistry[]];
0 nào sau đây để xây dựng public class MonolightCodecProvider implements CodecProvider { public MonolightCodecProvider[] {} @Override @SuppressWarnings["unchecked"] public Codec get[Class clazz, CodecRegistry registry] { if [clazz == Monolight.class] { return [Codec] new MonolightCodec[registry]; } // return null when not a provider for the requested class return null; } }
5 từ các trường hợp public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 có trong các loại liên quan:Đoạn mã sau đây cho thấy cách xây dựng
public class MonolightCodecProvider implements CodecProvider { public MonolightCodecProvider[] {} @Override @SuppressWarnings["unchecked"] public Codec get[Class clazz, CodecRegistry registry] { if [clazz == Monolight.class] { return [Codec] new MonolightCodec[registry]; } // return null when not a provider for the requested class return null; } }
5 bằng phương thức CodecRegistry newRegistry = CodecRegistries.fromRegistries[ CodecRegistries.fromCodecs[new MyEnumCodec[]], MongoClientSettings.getDefaultCodecRegistry[]];
3:Trong ví dụ trước, chúng tôi chỉ định các triển khai
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 sau:Phương pháp
CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
2 trả về một thể hiện lớp của lớp Java vì Java không thể suy ra loại do xóa loại.Xem các ví dụ mã sau đây cho thấy cách bạn có thể thực hiện một tùy chỉnh
4.public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } } Enum
7 chứa các giá trị "BẬT" và "TẮT" để biểu thị các trạng thái của một công tắc điện.Codec powerStatusCodec = codecRegistry.get[String.class]; Codec integerCodec = codecRegistry.get[Integer.class];
Lớp
Codec powerStatusCodec = codecRegistry.get[String.class]; Codec integerCodec = codecRegistry.get[Integer.class];
8 thực hiện public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 để chuyển đổi các giá trị Java public class MonolightCodecProvider implements CodecProvider { public MonolightCodecProvider[] {} @Override @SuppressWarnings["unchecked"] public Codec get[Class clazz, CodecRegistry registry] { if [clazz == Monolight.class] { return [Codec] new MonolightCodec[registry]; } // return null when not a provider for the requested class return null; } }
0 thành các giá trị BSON boolean tương ứng. Phương pháp CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
0 chuyển đổi Codec powerStatusCodec = codecRegistry.get[String.class]; Codec integerCodec = codecRegistry.get[Integer.class];
7 thành BSON boolean và phương pháp CodecRegistry codecRegistry = CodecRegistries.fromCodecs[new IntegerCodec[], new PowerStatusCodec[]];
1 thực hiện chuyển đổi theo hướng ngược lại.Tuy nhiên, trong các trường hợp bạn thêm một lớp chứa các trường yêu cầu các đối tượng
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 tương ứng, bạn cần đảm bảo rằng bạn khởi tạo các đối tượng public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 cho các trường của lớp trước khi bạn khởi tạo public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 cho lớp. Bạn có thể sử dụng tham số public class MonolightCodecProvider implements CodecProvider { public MonolightCodecProvider[] {} @Override @SuppressWarnings["unchecked"] public Codec get[Class clazz, CodecRegistry registry] { if [clazz == Monolight.class] { return [Codec] new MonolightCodec[registry]; } // return null when not a provider for the requested class return null; } }
5 trong phương thức BsonTypeClassMap bsonTypeClassMap = new BsonTypeClassMap[]; Class clazz = bsonTypeClassMap.get[BsonType.ARRAY]; System.out.println["Java type: " + clazz.getName[]];
7 để vượt qua bất kỳ trường hợp public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 nào mà public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 dựa vào.Ví dụ mã sau đây cho thấy cách bạn có thể triển khai
BsonTypeClassMap bsonTypeClassMap = new BsonTypeClassMap[]; Class clazz = bsonTypeClassMap.get[BsonType.ARRAY]; System.out.println["Java type: " + clazz.getName[]];
9 để vượt qua Map>[]; replacements.put[BsonType.ARRAY, Set.class]; BsonTypeClassMap bsonTypeClassMap = new BsonTypeClassMap[replacements]; Class clazz = bsonTypeClassMap.get[BsonType.ARRAY]; System.out.println["Java type: " + clazz.getName[]];
3 bất kỳ trường hợp public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 nào mà nó cần trong một ví dụ public class MonolightCodecProvider implements CodecProvider { public MonolightCodecProvider[] {} @Override @SuppressWarnings["unchecked"] public Codec get[Class clazz, CodecRegistry registry] { if [clazz == Monolight.class] { return [Codec] new MonolightCodec[registry]; } // return null when not a provider for the requested class return null; } }
5 như Codec powerStatusCodec = codecRegistry.get[String.class]; Codec integerCodec = codecRegistry.get[Integer.class];
8 từ ví dụ trước của chúng tôi:public class MonolightCodecProvider implements CodecProvider { public MonolightCodecProvider[] {} @Override @SuppressWarnings["unchecked"] public Codec get[Class clazz, CodecRegistry registry] { if [clazz == Monolight.class] { return [Codec] new MonolightCodec[registry]; } // return null when not a provider for the requested class return null; } }
Để xem một ví dụ có thể chạy được thể hiện các hoạt động đọc và ghi bằng các lớp
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 này, hãy xem phần ví dụ Codec tùy chỉnh của hướng dẫn này.Custom Codec Example section of this guide.Khi làm việc với POJOS, hãy xem xét sử dụng
Map>[]; replacements.put[BsonType.ARRAY, Set.class]; BsonTypeClassMap bsonTypeClassMap = new BsonTypeClassMap[replacements]; Class clazz = bsonTypeClassMap.get[BsonType.ARRAY]; System.out.println["Java type: " + clazz.getName[]];
8 để giảm thiểu mã trùng lặp để chuyển đổi các loại dữ liệu được sử dụng phổ biến và tùy chỉnh hành vi của chúng. Xem Hướng dẫn tùy chỉnh POJO của chúng tôi để biết thêm thông tin.Đăng ký codec mặc định là một tập hợp các lớp
BsonTypeClassMap bsonTypeClassMap = new BsonTypeClassMap[]; Class clazz = bsonTypeClassMap.get[BsonType.ARRAY]; System.out.println["Java type: " + clazz.getName[]];
9 chỉ định chuyển đổi giữa các loại Java và MongoDB thường được sử dụng. Trình điều khiển tự động sử dụng sổ đăng ký codec mặc định trừ khi bạn chỉ định một loại khác.Nếu bạn cần ghi đè hành vi của một hoặc nhiều lớp
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4, nhưng giữ hành vi từ Cơ quan đăng ký codec mặc định cho các lớp khác, bạn có thể chỉ định tất cả các thông tin đăng ký theo thứ tự ưu tiên. Ví dụ: giả sử bạn muốn ghi đè hành vi của nhà cung cấp mặc định của public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 cho các loại enum với tùy chỉnh public class Monolight { private PowerStatus powerStatus = PowerStatus.OFF; private Integer colorTemperature; public Monolight[] {} // ...
2 của bạn, bạn phải thêm nó vào danh sách đăng ký trước khi đăng ký codec mặc định như trong ví dụ dưới đây:CodecRegistry newRegistry = CodecRegistries.fromRegistries[ CodecRegistries.fromCodecs[new MyEnumCodec[]], MongoClientSettings.getDefaultCodecRegistry[]];
Để biết thêm thông tin về các lớp và giao diện trong phần này, hãy xem các phần tài liệu API sau:
CodecProvider
Đăng ký codec mặc định
Lớp
public class Monolight { private PowerStatus powerStatus = PowerStatus.OFF; private Integer colorTemperature; public Monolight[] {} // ...
3 chứa ánh xạ được đề xuất giữa các loại BSON và Java. Bạn có thể sử dụng lớp này trong tùy chỉnh public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 hoặc BsonTypeClassMap bsonTypeClassMap = new BsonTypeClassMap[]; Class clazz = bsonTypeClassMap.get[BsonType.ARRAY]; System.out.println["Java type: " + clazz.getName[]];
9 để giúp bạn quản lý loại Java nào để giải mã các loại BSON của bạn thành các lớp container triển khai public class Monolight { private PowerStatus powerStatus = PowerStatus.OFF; private Integer colorTemperature; public Monolight[] {} // ...
6 hoặc public class Monolight { private PowerStatus powerStatus = PowerStatus.OFF; private Integer colorTemperature; public Monolight[] {} // ...
7 như lớp public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
5.Bạn có thể thêm hoặc sửa đổi ánh xạ mặc định
public class Monolight { private PowerStatus powerStatus = PowerStatus.OFF; private Integer colorTemperature; public Monolight[] {} // ...
3 bằng cách truyền một public class Monolight { private PowerStatus powerStatus = PowerStatus.OFF; private Integer colorTemperature; public Monolight[] {} // ...
7 chứa các mục nhập mới hoặc thay thế.Đoạn mã sau cho thấy cách bạn có thể truy xuất loại lớp Java tương ứng với loại BSON trong phiên bản
public class Monolight { private PowerStatus powerStatus = PowerStatus.OFF; private Integer colorTemperature; public Monolight[] {} // ...
3 mặc định:BsonTypeClassMap bsonTypeClassMap = new BsonTypeClassMap[]; Class clazz = bsonTypeClassMap.get[BsonType.ARRAY]; System.out.println["Java type: " + clazz.getName[]];
Mã này xuất ra như sau:
Java type: java.util.List
Bạn có thể sửa đổi các ánh xạ này trong thể hiện của mình bằng cách chỉ định thay thế trong hàm tạo
public class Monolight { private PowerStatus powerStatus = PowerStatus.OFF; private Integer colorTemperature; public Monolight[] {} // ...
3. Đoạn mã sau đây cho thấy cách bạn có thể thay thế ánh xạ cho public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
03 trong phiên bản public class Monolight { private PowerStatus powerStatus = PowerStatus.OFF; private Integer colorTemperature; public Monolight[] {} // ...
3 của bạn bằng lớp public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
05:Map>[]; replacements.put[BsonType.ARRAY, Set.class]; BsonTypeClassMap bsonTypeClassMap = new BsonTypeClassMap[replacements]; Class clazz = bsonTypeClassMap.get[BsonType.ARRAY]; System.out.println["Java type: " + clazz.getName[]];
Mã này xuất ra như sau:
Bạn có thể sửa đổi các ánh xạ này trong thể hiện của mình bằng cách chỉ định thay thế trong hàm tạo
public class Monolight { private PowerStatus powerStatus = PowerStatus.OFF; private Integer colorTemperature; public Monolight[] {} // ...
3. Đoạn mã sau đây cho thấy cách bạn có thể thay thế ánh xạ cho public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
03 trong phiên bản public class Monolight { private PowerStatus powerStatus = PowerStatus.OFF; private Integer colorTemperature; public Monolight[] {} // ...
3 của bạn bằng lớp public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
05:BsonTypeClassMap API Documentation.Để biết danh sách đầy đủ các ánh xạ mặc định, hãy tham khảo tài liệu API BSONTYPECLASSMAP.
Để biết ví dụ về cách lớp
5 sử dụngpublic class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
3, hãy xem mã nguồn trình điều khiển cho các lớp sau:public class Monolight { private PowerStatus powerStatus = PowerStatus.OFF; private Integer colorTemperature; public Monolight[] {} // ... DocumentCodecProvider
DocumentCodec
Trong phần này, chúng tôi chỉ ra cách bạn có thể triển khai
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 và BsonTypeClassMap bsonTypeClassMap = new BsonTypeClassMap[]; Class clazz = bsonTypeClassMap.get[BsonType.ARRAY]; System.out.println["Java type: " + clazz.getName[]];
9 để xác định logic mã hóa và giải mã cho lớp Java tùy chỉnh. Chúng tôi cũng chỉ ra cách bạn có thể chỉ định và sử dụng các triển khai tùy chỉnh của mình để thực hiện các hoạt động chèn và truy xuất.public class Monolight { private PowerStatus powerStatus = PowerStatus.OFF; private Integer colorTemperature; public Monolight[] {} // ...
Đoạn mã sau đây hiển thị lớp tùy chỉnh ví dụ của chúng tôi được gọi là
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
10 và các trường của nó mà chúng tôi muốn lưu trữ và lấy từ bộ sưu tập MongoDB:Lớp này chứa các trường sau, mỗi trường chúng ta cần gán một
4:PowerStatusCodec that converts specific enum values to BSON booleans.public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
12 mô tả liệu ánh sáng có được bật "BẬT" hoặc "TẮT" mà chúng tôi sử dụng powerstatuscodec chuyển đổi các giá trị enum cụ thể thành boleans BSON.public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
13 mô tả màu của ánh sáng và chứa giá trị public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
14 mà chúng tôi sử dụng BsonTypeClassMap bsonTypeClassMap = new BsonTypeClassMap[]; Class clazz = bsonTypeClassMap.get[BsonType.ARRAY]; System.out.println["Java type: " + clazz.getName[]];
0 có trong thư viện BSON.public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
0Ví dụ mã sau đây cho thấy cách chúng ta có thể triển khai
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 cho lớp public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
10. Lưu ý rằng hàm tạo mong đợi một thể hiện là public class MonolightCodecProvider implements CodecProvider { public MonolightCodecProvider[] {} @Override @SuppressWarnings["unchecked"] public Codec get[Class clazz, CodecRegistry registry] { if [clazz == Monolight.class] { return [Codec] new MonolightCodec[registry]; } // return null when not a provider for the requested class return null; } }
5 mà từ đó nó truy xuất các trường hợp public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 mà nó cần để mã hóa và giải mã các trường của nó:public class MonolightCodecProvider implements CodecProvider { public MonolightCodecProvider[] {} @Override @SuppressWarnings["unchecked"] public Codec get[Class clazz, CodecRegistry registry] { if [clazz == Monolight.class] { return [Codec] new MonolightCodec[registry]; } // return null when not a provider for the requested class return null; } }
Để đảm bảo chúng tôi thực hiện các phiên bản
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
4 cho các trường có sẵn cho public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
10, chúng tôi thực hiện một tùy chỉnh BsonTypeClassMap bsonTypeClassMap = new BsonTypeClassMap[]; Class clazz = bsonTypeClassMap.get[BsonType.ARRAY]; System.out.println["Java type: " + clazz.getName[]];
9 được hiển thị trong ví dụ mã sau:Sau khi xác định logic chuyển đổi, chúng tôi có thể thực hiện các mục sau:
Lưu trữ dữ liệu từ các trường hợp
10 vào MongoDBpublic class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
Lấy dữ liệu từ MongoDB vào các trường hợp
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
10public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
2Nếu bạn chạy ví dụ trước, bạn sẽ thấy đầu ra sau:
public class PowerStatusCodec implements Codec { @Override public void encode[BsonWriter writer, PowerStatus value, EncoderContext encoderContext] { if [value != null] { writer.writeBoolean[value.equals[PowerStatus.ON] ? Boolean.TRUE : Boolean.FALSE]; } } @Override public PowerStatus decode[BsonReader reader, DecoderContext decoderContext] { return reader.readBoolean[] ? PowerStatus.ON : PowerStatus.OFF; } @Override public Class getEncoderClass[] { return PowerStatus.class; } }
3Để biết thêm thông tin về các phương thức và lớp được đề cập trong phần này, hãy xem tài liệu API sau:
withCodecRegistry[]
MongoClientSettings.getDefaultCodecRegistry[]
Codec
CodecProvider