springboot+mongodb

本文介绍了一个使用Spring Boot和MongoDB的示例应用,演示了如何通过UserController实现添加、编辑、删除等基本CRUD操作,并展示了如何利用mongoTemplate进行更复杂的查询和更新。

pom.xml

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

application.properties:

spring.data.mongodb.uri=mongodb://localhost:27017/test

UserRepository:类似Jpa查询方式

public interface UserRepository extends MongoRepository<User, String> {
    List<User> findByName(String name);
}

UserController:

添加操作

@RequestMapping("add")
public String add() {
    User user = new User();
    user.setName("sher");
    user.setAge(11);
    return userRepository.save(user).toString();
}

更新操作

@RequestMapping("edit/{id}")
public String edit(@PathVariable String id) {
    User user = userRepository.findOne(id);
    user.setName("sher_edit");
    return userRepository.save(user).toString();
}

删除操作

@RequestMapping(value = "del/{id}", method = RequestMethod.DELETE)
public void del(@PathVariable String id) {
    userRepository.delete(id);
}

mongoTemplate操作:

mongoTemplate.save(user);//添加
        Query query = new Query(Criteria.where("name").is("sher"));
        List<User> userList = mongoTemplate.find(query, User.class);//查询所有name是sher
        userList.forEach(System.out::println);
        User one = mongoTemplate.findOne(query, User.class);//单个结果查询操作
        System.out.println("查询单个User:" + one.toString());
        Update update = new Update().set("age", 24);
        User modify = mongoTemplate.findAndModify(query, update, User.class);//数据库更新了但是返回的是旧的对象
        System.out.println("返回更新前对象:" + modify);
        Update update2 = new Update().set("age", 26);
        FindAndModifyOptions upsert = new FindAndModifyOptions().returnNew(true).upsert(true);
        User andModify = mongoTemplate.findAndModify(query, update2, upsert, User.class);//返回更新后对象
        System.out.println("返回更新后对象" + andModify);
//        mongoTemplate.updateFirst(query, update, User.class);//进行第一条符合要求的数据更新
//        mongoTemplate.updateMulti(query, update, User.class);//进行更新多行数据
//        mongoTemplate.remove(user);//进行数据删除

注意:upsert(true),update和insert结合体默认为false,当它为true的时候,update方法会首先查找与第一个参数匹配的记录,在用第二个参数更新之,如果找不到与第一个参数匹配的的记录,就插入一条

后台打印结果:

User{id='58e846a758717a2878845638', name='sher', age=33}
User{id='58e855e958717a1a202a645f', name='sher', age=11}
User{id='58e8583358717a2c58077fea', name='sher', age=11}
User{id='58e858c858717a1b343b4132', name='sher', age=11}
User{id='58e85a4e58717a2e50a577c1', name='sher', age=11}
查询单个User:User{id='58e846a758717a2878845638', name='sher', age=33}
返回更新前对象:User{id='58e846a758717a2878845638', name='sher', age=33}
返回更新后对象User{id='58e846a758717a2878845638', name='sher', age=26}

还有更多方法具体参照api

 

完整例子

转载于:https://my.oschina.net/u/3125112/blog/875231