• SpringData MongoDB


    一、使用步骤


     

    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("批量删除成功");
        }
    

      

      

      

      

      

      

  • 相关阅读:
    linux下Tomcat配置提示权限不够解决办法
    Linux 生成SSL证书 供 nginx使用
    mysql存储emoji表情报错的处理方法【更改编码为utf8mb4】
    Linux Mysql 备份与还原
    Linux 安装Mysql
    Linux 卸载Mysql
    Linux yum安装java环境
    InMemoryUploadedFile对象复制到磁盘中的临时路径
    在django中使用(配置)celery
    使用ffmpeg以mp4的格式保存视频
  • 原文地址:https://www.cnblogs.com/anyanpeng/p/15234439.html
Copyright © 2020-2023  润新知