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

      

      

      

      

      

      

  • 相关阅读:
    redis持久化之AOF和RDB
    pycharm快捷键
    500系列错误
    400系列错误
    Linux常用命令大全
    从浏览器输入一个地址,发送请求,经历了哪些过程(面试问题)
    401的错误分析
    301和302的区别
    数据库 语法收集 (主 mysql,次oracle,日常积累)
    python 发送邮件 smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed') 以及授权码设置步骤
  • 原文地址:https://www.cnblogs.com/anyanpeng/p/15234439.html
Copyright © 2020-2023  润新知