SpringBoot应用MangoDB数据库 之 MongoRepository对象

这篇是在之前整合springboot整合mongodb那篇文章基础之上的,整合请移步

MongoRepository有以下方法:

count()统计总数
count(Example< S > example)条件统计总数
delete(T entities)通过对象信息删除某条数据
deleteById(ID id)通过id删除某条数据
deleteALL(Iterable<? extends T> entities)批量删除某条数据
deleteAll() 清空表中所有的数据
existsById(ID id) 判断数据是否存在
exists(Example< T > example) 判断某特定数据是否存在
findAll() 获取表中所有的数据
findAll(Sort sort) 获取表中所有的数据,按照某特定字段排序
findAll(Pageable pageAble) 获取表中所有的数据,分页查询
findAll(Example< T > example) 条件查询
findAll(Iterable ids) 条件查询
findAll(Example< T > example,Pageable pageable) 条件分页查询
findAll(Example< T > example,Sort sort) 条件查询排序
findOneById(ID id) 通过id查询一条数据
findOne(Example example) 通过条件查询一条数据
findById(ID id) 通过ID查询数据(推荐)
insert(S entities) 插入一条数据
insert(Iterable< T > entities) 插入多条数据
save(S entities) 保存一条数据
saveAll(Iterable< T > entities)
save(Iterable< T > iterable) 加入多条数据

以下演示方法的使用,实际上方法传参方式就几个,可以举一反三,以上方法都可以自己尝试使用。

   //插入文档中嵌入一个文档
    @Test
        public void insertMany() {
        Users users=new Users();
        Info info=new Info();
        String []sport={"run","basketball"};
        String []address={"hunan","beijing"};
        info.setSport(sport);
        info.setAddress(address);
        users.setUsername("xiaohao999");
        users.setPhone("183xxxxxxxxx");
        users.setInfo(info);
        Users insert = usersRepository.insert(users);
        System.out.println(insert);

    }
 //批量插入
    @Test
    public void insertList() {
        List<Users> list = new ArrayList<>();
        for (int i = 1; i <= 100; i++) {
            Users users = new Users();
            users.setAddress("湖南");
            users.setHeadImg("");
            users.setPassword("xxxxxxx");
            users.setPhone("183xxxxxxx");
            users.setUsername("xiaohao" + i);
            list.add(users);

        }
        usersRepository.insert(list);

    }

    //查询全部
    @Test
    public void findALL() {
        List<Users> all = usersRepository.findAll();
        for (Users users : all) {
            System.out.println(users);
        }
    }

    //查询条数
    @Test
    public void count() {
        long count = usersRepository.count();
        System.out.println(count);
    }

    //条件统计条数
    @Test
    public void countByExample() {
        Users users = new Users();
        users.setUsername("xiaohao55");
        Example<Users> usersExample = Example.of(users);
        long count = usersRepository.count(usersExample);
        System.out.println(count);
    }

    @Test
    public void exists() {
        Users users = new Users();
        users.setUsername("xiaohao");
        Example<Users> usersExample = Example.of(users);
        boolean exists = usersRepository.exists(usersExample);
        System.out.println(exists);
    }

    @Test
    public void existsById() {
        String id = "5d36d565bde542361407adfb";
        boolean exists = usersRepository.existsById(id);
        System.out.println(exists);
    }

    //查询喜欢运动中有跑步,和篮球的用户
    @Test
    public void findExample(){
        Users users=new Users();
        Info info =new Info();
        info.setSport(new String[]{"run""basketball"});

        users.setInfo(info);
        Example example=Example.of(users);
        Optional one = usersRepository.findOne(example);
        usersRepository.sa
        Users user = (Users) one.get();
        System.out.println(user);


    }


    //排序查询,这里查找姓名按照一个个字段逐一比较
    @Test
    public void findBySort() {

        Sort sort = new Sort(Sort.Direction.DESC, "username");
        List<Users> all = usersRepository.findAll(sort);
        for (Users users : all) {
            System.out.println(users);
        }
    }

    //获取表中所有的数据,分页查询 pageAble
    @Test
    public void findByPageable() {
        int page = 2;
        int size = 100;
        Pageable pageable = new PageRequest(page, size);
        Page<Users> all = usersRepository.findAll(pageable);

        for (Users users : all) {
            System.out.println(users);
        }


    }

    //批量查询
    @Test
    public void findByList() {

        List<String> ids = new ArrayList<>();
        ids.add("5d36d565bde542361407adfb");
        ids.add("5d36d7e0bde5420f34116904");
        Iterable<Users> allById = usersRepository.findAllById(ids);
        for (Users users:allById ){
            System.out.println(users);
        }


    }

    //
    //利用save更新
    @Test
    public void save() {
        Users users= new Users();
        users.setId("5d36d565bde542361407adfb");
        users.setUsername("shawn");
        usersRepository.save(users);


    }

    //添加一个新字段,(user其他字段不能传空,否则将只有这个字段)
    @Test
    public void saveNew1() {
        Users users= new Users();
        users.setId("5d36d565bde542361407adfb");
        users.setUsername("shawn");
        users.setAge("22");
        usersRepository.save(users);


    }
    //添加一个新字段,其他的不修改可以先查询
    @Test
    public void saveNew2() {
        String id="5d36d7e0bde5420f34116904";
        Optional<Users> byId = usersRepository.findById(id);
        Users users = byId.get();
        users.setUsername("shawn");
        System.out.println(users);
        usersRepository.save(users);


    }

总结
方法中传参数为:

对象 entities
Example example=Example.of(entities);
List集合

更复杂的操作可以结合MongoTemplate来实现

作者:潇豪
链接:https://www.jianshu.com/p/f47621a224a6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(Spring,数据库)