栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot集成MongoDb的简单应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot集成MongoDb的简单应用

集成

创建springBoot项目,添加maven依赖


    org.springframework.boot
    spring-boot-starter-data-mongodb

application.properties文件配置:

spring.data.mongodb.uri=mongodb://127.0.0.1:27017/lgy
创建实体类

现在我们数据库有student_info这个表,如下图:

按照这个结构去创建实体类

package com.example.mongo.entity;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

@Document("student_info")
public class Student {
    @Id
    private String id;
    private Integer sex;
    @Field("username")
    private String name;
    private Integer age;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

其中@Document(“student_info”)注解指定数据库中的表,@Field(“username”)可以映射其中的列

添加操作
    
    public void add() {
        Student student = new Student();
        student.setName("alis");
        student.setAge(25);
        student.setSex(1);
        mongoTemplate.insert(student);
    }
    
    public void add_two() {
        Map map = new HashMap<>();
        map.put("_id", "10086");
        map.put("username", "bob");
        map.put("age", 13);
        map.put("sex", 0);
        mongoTemplate.insert(map, "student_info");
    }
查询

首先是比较简单的查询

//查询全部
List all = mongoTemplate.findAll(Student.class);
//主键查询
Student student = mongoTemplate.findById("your id", Student.class);

条件查询、排序、分页

 //条件判断都放在Criteria里
 Criteria criteria = new Criteria();
 // in 操作
 criteria.and("sex").in(Arrays.asList(0, 1));
 // age 大于等于0 小于等于30
 criteria.and("age").gte(0).lte(30);
 //id 等于 10086
 criteria.and("_id").is("10086");
 //模糊查询
 String key = "匹配字段";
 Pattern pattern = Pattern.compile(String.format("%s%s%s", "^.*", key, ".*$"), Pattern.CASE_INSENSITIVE);
 criteria.and("username").regex(pattern);

 Query query = new Query(criteria);
 //排序 descending就是降序 不加默认升序
 query.with(Sort.by("age").descending());
 
 query.with(PageRequest.of(0, 10));
 //第二种分页方式
 //query.skip((page - 1) * size).limit(size);

 List list = mongoTemplate.find(query, Student.class);
修改操作
//首先要根据id查询到要修改的数据
 String id = "10086";
 Query query = new Query(Criteria.where("_id").is(id));
 //要修改的字段
 Update update = Update.update("sex", 1)
         .set("username", "bob111")
         .set("age", 12);
 mongoTemplate.upsert(query,update,"student_info");
删除
String id = "10086";
Query query = new Query(Criteria.where("_id").is(id));
mongoTemplate.remove(query,"student_info");
高级查询 聚合操作
Criteria criteria = new Criteria();
criteria.and("age").gt(20);
Aggregation aggregation = Aggregation.newAggregation(
        //条件过滤
        Aggregation.match(criteria),
        
        Aggregation.group("sex")
                .sum("age")
                .as("total"),
        //排序
        Aggregation.sort(Sort.by("total").descending()),
        //查询的条数 可以理解为分页 limit 0,10
        Aggregation.skip(0),
        Aggregation.limit(10)
);
AggregationResults aggregationResults = mongoTemplate.aggregate(aggregation, "student_info", Map.class);
List list = aggregationResults.getMappedResults();
list.forEach(x -> System.out.println(x));
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992031.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号