2 ding343621594 ding343621594 于 2016.04.25 10:15 提问

mongoTemplate修改时如何传入一个对象 1C

第一次使用mongoDB来开发java项目,整合了Spring,有一个user类,里面有id,name和password,想在修改的时候直接传入一个user对象,因为之前mysql的时候一直是这么干的。。。但是测试时发现不起作用,因为关于mongoTemplate的文档比较少,也一直没查到,所以有几个问题想请教一下高手,望不吝赐教,谢谢!

service相关代码

    public int updateUser(User user) {
    mongoTemplate.updateFirst(new Query(Criteria.where("id").is(user.getId())),Update.update("user", user), User.class, USER_COLLECTION);
        return 0;
    }


测试类相关代码

    @Test
    public void userAddTest() throws Exception {
        User user = new User();
        user.setName("zhangsan");
        user.setPassword("123abc");
        userService.addUser(user);

        List<User> list = userService.listAll();
        for (User user2 : list) {
            System.out.println(user2.getName());
            System.out.println(user2.getPassword());
        }

        System.out.println("*********************");
        user.setName("lisi");
        userService.updateUser(user);

        list = userService.listAll();
        for (User user2 : list) {
            System.out.println(user2.getName());
            System.out.println(user2.getPassword());
        }
    }

测试结果:

    zhangsan
    123abc
*********************
    zhangsan
    123abc

对了,还有一个问题,就是那个Update类中的update(String key, Object Value)里面的key 和 value是什么?因为在文档里没有查到……所以还烦请一并赐教,谢谢~

3个回答

buyi_
buyi_   2016.04.27 00:53

key是mongodb里面集合里的字段名,value是你要修改的值,要传入对象你可以看看spring data mongodb。用jpa方式操作简单

xdstuhq
xdstuhq   2016.07.25 19:06
zouwenjin
zouwenjin   2016.11.08 16:30

我在项目中使用的是spring mongotemplate,是修改某个字段,希望下面链接对你有帮助
http://dashen100.com/question/984

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
spring MongoTemplate 更新复杂对象数据
先说下需求(我把需求简化了下),看下图。现在有很多人选了自己要上的课程,数据存mongo里,但是发现courses中id=2的【数学】,名称录入错误了,或者说id=2的数学课程,名称需要更新成“高等数学”。   一开始按照老套路直接去update,会报一个错。Write failed with error code 16837 and error message 'cannot use the p...
方法传参,传对象和传对象的属性区别
传递基本数据类型:传递给方法体的是一个具体的值,变量的类型属于基本数据类型,且属于局部变量,存在栈中,执行完该局部变量所在的方法体后,局部变量占用的内存空间就会销毁,变动的值改变后无法带回来。 传递引用数据类型:传递给方法的是一个对象在堆内存中的首地址,变量的类型属于引用数据类型,且属于局部变量存在栈中,在执行完该局部变量所在的方法体之后,该局部变量所在的内存空间回被释放,变动的值可以带回来
新增,修改的去除重复字段的验证
通过前台给数据库中新增或修改记录时,会经常遇到重复字段的验证 比如说身份证,手机号等, 一般同一张表里面字段的值是不允许重复的。因此做重复验证 1.新增的时候容易验证,直接将要插入的单个字段作为查询条件对数据库进行查询,查到结果说明存在重复 2 修改的时候,也是将要做修改的值作为查询条件对数据库进行查询,查到结果说明重复,          但是,如果我未做修改,同样会从进行一次数据库查询
mybatis怎么实现对象参数和注解参数同时传入
自定义对象也用@param注解. 在mapper.xml中使用的时候,#{对象别名.属性名},如#{user.id} 注意,使用了@pram注解的话在mapper.xml不加parameterType。
retrofit 如何传入一个对象
如果数据格式是这样的 {     "results": [         {             "location": {                 "id": "WX4FBXXFKE4F",                 "name": "北京",                 "country": "CN",                 "path
初级_进行修改操作的时候jsp中数据的回显
在修改表单数据的时候,点击修改按钮.进入修改的jsp中时,让原来的数据显示出来,以便修改参考,主要是让radio,checkbox.和select三种选择项默认显示出来 首先要导入 jstl.jar和standard.jar包,并且在jsp中声明 1 . 的回显         checked="checked">男&nbsp; 2. 的回显    
MongodbTemplate的查询操作
Class类@Document(collection = "class") public class Class { private String classId; private List<Student> Students; public String getClassId() { return classId; } public void
关于修改时,如何确定,单选框,下拉列别框,原先选择的值
有时候,我们队下拉列表框,单选框,进行提交时,一般是把字符串类型转化为整数在提交,那么当进行修改的时候,如何确定原先所选择的值 下面进行有关讲解 首先我们在res目录下value下的string中新建一个  作为下拉展示数据包 name="spinner"> 请选择 北京 上海 广州 深圳 Array
【项目问题总结】4:修改操作的重复性验证逻辑
问题描述:         在做基础系统的Bug调试及修改的过程中,遇到了一个很奇怪的问题:在进行记录的修改操作时,如下图所示,         理论上层次名称和备注都是可以随意修改的,但是如果我只是修改备注,对名称不做任何的改动(或者是只是点开修改的弹出框,不做任何改动),点击确定进行提交,总是弹出层次名称重复的提示,导致修改失败。 问题分析:         经过各种测试,发现
取得 改变前 的 select下拉框的值
 old属性就是 之前的值