一、使用步骤


 

1.1 导入pom依赖

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

1.2 application.properties中加入配置

spring.data.mongodb.database=admin
spring.data.mongodb.host=10.19.186.213
spring.data.mongodb.port=27017

1.3 编写实体类

@Document("User")
public class User<Data> implements Serializable {
    @Field("Id")
    private Integer Id;
    @Indexed
    private String name;
    private String age;

Document 文档,填写集合名称

1.4 使用Template编写新增方法

/**
     * 保存对象
     * @param user
     */
    public void save(User user){
        mongoTemplate.save(user);
    } 

执行结果,数据库中新增一条记录

 

 1.5 使用Template编写查询方法

/**
     * 查询单个对象
     * @param name
     * @return
     */
    public User findUser(String name){
        Query query = new Query(Criteria.where("name").is(name));
        User user = mongoTemplate.findOne(query, User.class);
        return user;
    }

 

 1.6 使用Template更新

 /**
     * 更新用户
     * @param user
     */
    public void updateUser(User user){
        Query query=new Query(Criteria.where("Id").is(user.getId()));
        Update update= new Update().set("age", user.getAge()).set("name", user.getName());
        mongoTemplate.updateFirst(query,update,User.class);
    }

 

 1.7 删除用户

/**
     * 删除用户
     * @param id
     */
    public void deleteUser(Integer id){
        Query query=new Query(Criteria.where("Id").is(id));
        mongoTemplate.remove(query,User.class);
    }

  

2.1 使用Repository对数据库进行CURD

2.1.1 接口继承MongoRepository

public interface RepositoryTest extends MongoRepository<User,String> {
}

2.1.2 引入repository

@Autowired
    private RepositoryTest repositoryTest;

2.1.3 新增用户测试

 /**
     * 增加用户
     */
    @Test
    public void saveUser(){
        User<Object> user = new User<>();
        user.setId(10001);
        user.setName("anan");
        user.setAge("12");
        repositoryTest.save(user);
    }

2.1.4 查询用户测试

 /**
     * 查询用户
     */
    @Test
    public void findUser(){
        Optional<User> byId = repositoryTest.findById("61386067aa33044a1195589b");
        System.out.println(byId.get().toString());
    }
根据ID进行查询

 

 根据其他属性进行查询:

根据name进行查询,首先在Repository中新增方法

User findByName(String name);
 /**
     * 根据条件查询
     */
    @Test
    public void findUserByCondition(){
        User byId = repositoryTest.findByName("anan");
        System.out.println(byId);
    }

 

 2.1.5 更新用户测试

  /**
     * 使用save更新,需要测试
     */
    @Test
    public void updateUser(){
        Optional<User> byId = repositoryTest.findById("61386067aa33044a1195589b");
        User user = byId.get();
        user.setName("de");
        repositoryTest.save(user);
        System.out.println("更新用户完成");
    } 

在刚开始测试时,发现并不能修改这条记录,一直会新增

后来发现数据中的中_id字段

 

 save修改的原理是根据_id是否已经存在,存在则修改,不存在则新增,而我的User中是没有这个字段的,所以每次传过去都是空的_id,会一直新增

@Document("User")
public class User<Data> implements Serializable {
    private String _id;

在User中新增_id字段解决上面问题

 

 可以看到_id记录中的名称已经修改了

2.1.6 删除用户测试

根据_id进行删除

/**
     * 删除用户测试
     */
    @Test
    public void deleteUser(){
        repositoryTest.deleteById("613866efd78e4b6246d8b5b1");
        System.out.println("删除成功");
    } 

根据id批量删除,首先在repository中新增方法

void deleteAllBy_idIsIn(List<String> ids);

  

 /**
     * 批量删除
     */
    @Test
    public void batchDeleteUser(){
        ArrayList<String> list = Lists.newArrayList();
        list.add("6131c83d93944e2364df3aec");
        list.add("6131cb08c9622c250fa4e9e0");
        list.add("6131d491a31d4c49a6c9585b");
        list.add("6138659913395b34a6e51e67");
        repositoryTest.deleteAllBy_idIsIn(list);
        System.out.println("批量删除成功");
    }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

  

 

 

 

 

 

 

 

 

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

  

posted on 2021-09-06 16:35  安晏朋  阅读(112)  评论(0编辑  收藏  举报