Java操作MongoDB时在insert后如何获取ObjectId

  在Java操作MongoDB时想在inset后获取到数据库中_id的值,其实是可以在insert成功后直接获取到的,不过有点细节需要注意一下。下面直接结合示例代码来说明:

  (1)假设有这样一个实体类:

public class TestDO {
    private String id;
    private String name;
    private String age;
    private String sex;
    private String address;
    private String hobby;

    public TestDO() {
        this.id = null;
        this.name = "";
        this.age = "";
        this.sex = "";
        this.address = "";
        this.hobby = "";
    }

    public TestDO(String id, String name, String age, String sex, String address, String hobby) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.address = address;
        this.hobby = hobby;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

    @Override
    public String toString() {
        return "TestDO{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                ", hobby='" + hobby + '\'' +
                '}';
    }
}

  (2)插入操作

private final String collectionName = "test_db";
@Autowired
private MongoTemplate mongoTemplate;

TestDO testDo = new TestDO();
testDo.setId(null); // 最好这样处理一下 mongoTemplate.insert(testDo, collectionName );
String objectId = testDo.getId(); // 获取到ObjectId值了

  (3)注意事项

  若想能正确获取到_id的值,那么实体类中必须要有id字段属性,同时在示例化时要么在构造函数中将this.id赋值为null,要么在实例化后调用setId(null),总之就是要在insert时一定要让id值为null

posted @ 2020-06-10 15:12  晒太阳的兔子很忙  阅读(3495)  评论(0编辑  收藏  举报