MongoDB(MongoTemplate和MongoRepository)对比

目录

MongoTemplate

bash 复制代码
 //条件查询
    @GetMapping("findUser")
    public void findUserList() {
        Query query = new Query(
                Criteria.where("name").is("zhang3")
                        .and("age").is(33)
        );
        List<User> users = mongoTemplate.find(query, User.class);
        users.forEach(System.out::println);
    }

    //条件模糊查询
    @GetMapping("findUserLike")
    public void findUserLike() {
        String name = "ang";
        String regex = String.format("%s%s%s", "^.*", name, ".*$");
        Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
        Query query = new Query(
                Criteria.where("name").regex(pattern)
        );
        List<User> users = mongoTemplate.find(query, User.class);
        users.forEach(System.out::println);
    }


    //条件模糊分页查询
    @GetMapping("findUserPage")
    public void findUserPage() {
        //0定义分页参数
        int pageNo = 1;
        int pageSize = 10;
        //1设置筛选条件
        String name = "ang";
        String regex = String.format("%s%s%s", "^.*", name, ".*$");
        Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
        Query query = new Query(
                Criteria.where("name").regex(pattern)
        );
        //2查询总记录数total
        long total = mongoTemplate.count(query, User.class);
        //3设置分页条件
        query.skip((pageNo-1)*pageSize).limit(pageSize);
        List<User> users = mongoTemplate.find(query, User.class);
        System.out.println("total = " + total);
        users.forEach(System.out::println);
    }

    //修改
    @GetMapping("update")
    public void updateUser() {
        User user = mongoTemplate.findById("5ffbfa2ac290f356edf9b5aa", User.class);
        user.setName("test_1");
        user.setAge(25);
        user.setEmail("493220990@qq.com");
        Query query = new Query(Criteria.where("_id").is(user.getId()));
        Update update = new Update();
        update.set("name", user.getName());
        update.set("age", user.getAge());
        update.set("email", user.getEmail());
        UpdateResult result = mongoTemplate.upsert(query, update, User.class);
        long count = result.getModifiedCount();
        System.out.println(count);
    }

MongoRepository

bash 复制代码
@GetMapping("create")
    public void createUser() {
        User user = new User();
        user.setAge(20);
        user.setName("张三");
        user.setEmail("3332200@qq.com");
        User user1 = userRepository.save(user);
        System.out.println("user1 = " + user1);
    }

    //查询所有
    @GetMapping("findAll")
    public void findUser() {
        List<User> users = userRepository.findAll();
        users.forEach(System.out::println);
    }


    //根据id查询
    @GetMapping("findId")
    public void getById() {
        User user = userRepository.findById("64b4a856a2225f220ec3fa0f").get();
        System.out.println("user = " + user);
    }

    //条件查询
    @GetMapping("findUser")
    public void findUserList() {
        User user = new User();
        user.setName("张三");
        user.setAge(20);
        Example<User> example = Example.of(user);
        List<User> users = userRepository.findAll(example);
        users.forEach(System.out::println);
    }

    //条件模糊查询
    @GetMapping("findUserLike")
    public void findUserLike() {
        //查询条件
        User user = new User();
        user.setName("三");
        //模板构造器
        ExampleMatcher matcher = ExampleMatcher.matching()
                .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
                .withIgnoreCase(true);
        //查询条件模板
        Example<User> example = Example.of(user,matcher);
        List<User> users = userRepository.findAll(example);
        users.forEach(System.out::println);
    }

    //条件模糊分页查询
    @GetMapping("findUserPage")
    public void findUserPage() {
        //创建排序对象
        Sort sort = Sort.by(Sort.Direction.DESC,"age");
        //创建分页对象  第一页从0开始
        Pageable pageable = PageRequest.of(0,2,sort);
        //查询条件
        User user = new User();
        user.setName("三");
        //模板构造器
        ExampleMatcher matcher = ExampleMatcher.matching()
                .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
                .withIgnoreCase(true);
        //查询条件模板
        Example<User> example = Example.of(user,matcher);
        Page<User> userPage = userRepository.findAll(example, pageable);
        userPage.getContent().forEach(System.out::println);
        System.out.println("userPage.getTotalElements() = " + userPage.getTotalElements());
    }

    //修改
    @GetMapping("update")
    public void updateUser() {
        User user = userRepository.findById("60b8d57ed539ed5b124942de").get();
        user.setName("张三_1");
        user.setAge(25);
        user.setEmail("883220990@qq.com");
        User save = userRepository.save(user);
        System.out.println(save);
    }

    //删除操作
    @GetMapping("delete")
    public void delete() {
        userRepository.deleteById("60b8d57ed539ed5b124942de");
    }


    @GetMapping("testMethod1")
    public void testMethod1() {
        List<User> users = userRepository.getByNameAndAge("张三",20);
        users.forEach(System.out::println);
    }

    @GetMapping("testMethod2")
    public void testMethod2() {
        List<User> users = userRepository.getByNameLike("三");
        users.forEach(System.out::println);
相关推荐
天桥下的卖艺者4 小时前
使用scitable包,两步生成逆概率删失权重(IPCW)
数据库·r语言
隔窗听雨眠4 小时前
AI原生数据库浪潮:国产数据库的架构重构与路径之争
数据库
数据库小学妹4 小时前
数据库选型实战:从数据类型到TCO成本,五维决策框架+九款产品横评
数据库·信创·国产数据库·数据库选型·oracle迁移
神龙天舞20015 小时前
MySQL 备库为什么会延迟好几个小时
android·数据库·mysql
丙氨酸長鏈7 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
独行侠影a7 小时前
APScheduler+Redis 分布式定时任务:解决多实例任务重复执行
数据库·redis·分布式
传说故事8 小时前
数据库中一些常用英文单词含义
数据库·oracle
夏贰四8 小时前
中小企业搭建业务中台如何控成本?业务中台轻量化落地分几步实施?
数据库·业务中台
林焱RPA9 小时前
影刀RPA200篇纪念版:最实用的20个自动化场景大盘点
数据库
名字还没想好☜9 小时前
Go 的 time.After 在 select 循环里内存泄漏:定时器堆积原理与 timer.Reset 正确姿势
java·数据库·golang·go·goroutine