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);
相关推荐
Coder_Boy_2 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
helloworldandy2 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
数据知道3 小时前
PostgreSQL 故障排查:如何找出数据库中最耗时的 SQL 语句
数据库·sql·postgresql
qq_12498707533 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
枷锁—sha4 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Coder_Boy_4 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Gain_chance4 小时前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
此生只爱蛋4 小时前
【Redis】主从复制
数据库·redis
马猴烧酒.4 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库
天天爱吃肉82185 小时前
跟着创意天才周杰伦学新能源汽车研发测试!3年从工程师到领域专家的成长秘籍!
数据库·python·算法·分类·汽车