springboot 整合MongoDB

springboot 整合MongoDB

一 ,maven依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
</dependency>
<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
</dependency>
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
</dependency>

二 ,application.properties

spring.application.name=spring-boot-mongodb
spring.data.mongodb.uri=mongodb://127.0.0.1:27017/test
server.port=8888

三,代码开发

1 ,首先是实体类,@Document(collection = “user”)会在MongoDB中对应生成user集合,@Id主键

import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serializable;
import java.util.List;

@Setter
@Getter
@Document(collection = "user")
public class UserEntity implements Serializable {
    @Id
    private Long id;

    private String name;

    private String age;

    private String sex;

    private String homeAddress;

    private String workAddress;

    private String salary;

    private String[] likeSport;

    private String[] likeFood;

    private String[] likeCourse;

    private String tel;
    private TeacherEntity teacher;

    private List<TeacherEntity> teachers;
}

2 service

import com.mongodb.client.result.DeleteResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.LookupOperation;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

@Service
public class MongoDBService {
    @Autowired
     private MongoTemplate mongoTemplate;
    public UserEntity mongoDBAdd(UserEntity ue){
        return mongoTemplate.save(ue);
    }

    public DeleteResult mongoDBRemove(UserEntity ue){
        return mongoTemplate.remove(ue);
    }

    public String mongoDBUpdate(UserEntity ue){
        Query query = new Query(Criteria.where("id").is(ue.getId()));

        Update update = new Update();
        update.set("tel",ue.getTel());

        mongoTemplate.updateFirst(query, update, UserEntity.class);
        return "ok";
    }

    public UserEntity mongoDBQuery(UserEntity ue){
        Query query = new Query(Criteria.where("id").is(ue.getId()));
        UserEntity demoEntity = mongoTemplate.findOne(query, UserEntity.class);

        Query query1 = new Query(Criteria.where("id").gt(ue.getId()));
        List<UserEntity> lists = mongoTemplate.find(query1, UserEntity.class);

        Query query2 = new Query(new Criteria().orOperator(
                Criteria.where("id").is(ue.getId()),
                new Criteria().andOperator(
                        Criteria.where("name").is(ue.getName()),
                        Criteria.where("age").is(ue.getAge())
                )
            )
        );
        List<UserEntity> lists2 = mongoTemplate.find(query2, UserEntity.class);
        return demoEntity;
    }

    public UserEntity mongoDBLookUpQuery(UserEntity ue){
        LookupOperation lookupOperation= LookupOperation.newLookup().
                from("teacher").  //关联从表名
                localField("userid").     //主表关联字段
                foreignField("teacherid").//从表关联的字段
                as("result");   //查询结果名
//组合筛选条件Criteria ,从联表查询结果中筛选需要的结果
//       Criteria criteria0=Criteria.where("xxx").is(xx);   
//        Criteria criteria1=Criteria.where("xxx").is(xx);
 //       AggregationOperation match1= Aggregation.match(criteria1);
//        AggregationOperation match = Aggregation.match(criteria0);
//        Aggregation resultCriteria= Aggregation.newAggregation(match1,lookupOperation,match).;
        Aggregation aggregation=Aggregation.newAggregation(lookupOperation);
        //聚合查询必须是查询的主表名“user”,从表名在lookUpOpretion中以确定
        List<AggUserEntity> results = mongoTemplate.aggregate(aggregation,"user", AggUserEntity.class).getMappedResults();
        
        return null;
    }

    public UserEntity mongoDBAggQuery(UserEntity ue){

        Aggregation aggregation=Aggregation.newAggregation(
                Aggregation.project("age","homeAddress","workAddress"),
                Aggregation.match(Criteria.where("homeAddress").is(ue.getHomeAddress())),             
                Aggregation.group("age").count().as("ldd").last("homeAddress").as("homeAddress").last("workAddress").as("workAddress")
        );
        List<AggUserEntity> results = mongoTemplate.aggregate(aggregation,"user", AggUserEntity.class).getMappedResults();
        return null;
    }

}

3 controller

@RestController
@RequestMapping("/MongoDB/t")
public class MongoDBTController {
    @Autowired
    private MongdbService_t mongdbService;
    @PostMapping("add")
    public String mongoDBAdd(TeacherEntity ue){
        mongdbService.mongoDBAdd(ue);
        return "ok";
    }

    @PostMapping("remove")
    public String mongoDBRemove(TeacherEntity ue){
        mongdbService.mongoDBRemove(ue);
        return "ok";
    }

    @PostMapping("query")
    public String mongoDBQuery(TeacherEntity ue){
        mongdbService.mongoDBQuery(ue);
        return "ok";
    }

    @PostMapping("update")
    public String mongoDBUpdate(TeacherEntity ue){
        mongdbService.mongoDBUpdate(ue);
        return "ok";
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值