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);
相关推荐
蓝桉柒79 分钟前
安装数据库客户端工具
数据库
南城花随雪。36 分钟前
Redis(非关系型数据库)详细介绍
数据库·redis·nosql
冰红茶兑滴水44 分钟前
MySQL 内置函数
数据库·mysql
鸿·蒙1 小时前
【PTA】【数据库】【SQL命令】编程题2
数据库·sql·pta
J.P.August1 小时前
Oracle RAC 环境下数据文件误建在本地目录的处理过程
数据库·oracle
对酒当歌丶人生几何1 小时前
Mybatis控制台打印SQL执行信息(执行方法、执行SQL、执行时间)
java·数据库·sql·mybatis
LightOfNight2 小时前
Redis设计与实现第14章 -- 服务器 总结(命令执行器 serverCron函数 初始化)
服务器·数据库·redis·分布式·后端·缓存·中间件
代码中の快捷键2 小时前
MySQL数据库存储引擎的数据结构
数据结构·数据库·mysql
Adolf_19932 小时前
Django 路由层
数据库
好记忆不如烂笔头abc3 小时前
logminer挖掘日志归档查找问题
数据库·sql·mysql