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);
相关推荐
熙客21 小时前
TiDB:分布式关系型数据库
java·数据库·分布式·tidb
你想考研啊1 天前
oracle导出 导入
数据库·oracle
韩立学长1 天前
基于Springboot的旧时月历史论坛4099k6s9(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
TDengine (老段)1 天前
TDengine 字符串函数 CONCAT_WS 用户手册
android·大数据·数据库·时序数据库·tdengine·涛思数据
IT 小阿姨(数据库)1 天前
PostgreSQL 之上的开源时序数据库 TimescaleDB 详解
运维·数据库·sql·postgresql·开源·centos·时序数据库
熊文豪1 天前
openEuler 云原生实战:部署高性能 Redis 集群与压测分析
数据库·redis·云原生·openeuler
GTgiantech1 天前
科普SFP 封装光模块教程
服务器·网络·数据库
深圳市恒讯科技1 天前
如何在服务器上安装和配置数据库(如MySQL)?
服务器·数据库·mysql
言之。1 天前
TiDB分布式数据库技术架构概述
数据库·分布式·tidb
万事大吉CC1 天前
SQL表设计与约束教程
数据库·sql