Springboot如何按顺序插入Mongo(Json按顺序序列化)

需求:
Springboot使用mongoTmp,按顺序向Mongo插入实体类的数据
也可以理解为Json按顺序序列化

问题:
在使用Springboot向Mongo使用LinkedHashMap可以解决但是最好的方案显然是实体类注入,但发现顺序是乱的。

解决:
在实体类中使用JSONField(ordinal = 1, name="_id")
说明一下,ordinal是顺序,name是指定字段名,在mongo中有的是带有下划线的会被自动去掉,需要设置下name就可以了


@Document(collection = "core-configuration")
@Data
public class CoreConfiguration {
    @Id
    @JSONField(ordinal = 1, name="_id")
    private String _id;
    @JSONField(ordinal = 2, name="_class")
    private String _class;
    @JSONField(ordinal = 3)
    private Values values;
    @JSONField(ordinal = 4)
    private Access access;
    @JSONField(ordinal = 5)
    private Metadata metadata;

    @Data
    public static class Values {
        private boolean enabled;
        public Values(boolean enabled) {
            this.enabled = enabled;
        }
    }

    @Data
    public static class Access {

        private boolean global;
        private List<String> entries;
        public Access(boolean global, List<String> entries) {
            this.global = global;
            this.entries = entries;
        }
    }

    @Data
    public static class Metadata {
        private String tenantId;
        private int version;
        private int state;
        public Metadata(String tenantId, int version, int state) {
            this.tenantId = tenantId;
            this.version = version;
            this.state = state;
        }
    }

}


类中的方法 部分值的获取代码未贴入,请自行赋值选择

 @Service
@Slf4j
public class OpenAuthService {
  @Autowired
  private MongoTemplate mongoTemplate;
  
  public void internalInsert(String tenantId) {
        log.info("插入模板");
        CoreConfiguration coreConfiguration = new CoreConfiguration();
        coreConfiguration.set_id(tenantId + "-deptauthcontrol");
        coreConfiguration.set_class("cn.xxxx.charites.core.types.Configuration");
        coreConfiguration.setValues(new CoreConfiguration.Values(true));
        coreConfiguration.setAccess(new CoreConfiguration.Access(false, null));
        coreConfiguration.setMetadata(new CoreConfiguration.Metadata(tenantId, 1, 1));
        //vs.setEnabled(true);
        String json = JSONObject.toJSONString(coreConfiguration);
        mongoTemplate.insert(json , "core-configuration");
  }
 
 }

结果如下:
结果图示

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值