话不多说 直接上代码
model层 实体类映射 注意不要导错包
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import java.io.Serializable;
import java.util.List;
/**
- Created by DELL on 2019/11/26 17:10
*/
@Document(collection = “store”) //指定mongodb中的一个集合 store就是集合名字
@Getter
@Setter
public class Store implements Serializable {
// @Id
// private String id;
@Field(“storelist.area”)
private String area;
@Field(“city”)
private String city;
@Field(“storelist.tcList”) //list类型 下面对 tcList字段映射
public List tcList;
}
import lombok.*;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import org.springframework.stereotype.Service;
import java.util.List;
/**
- Created by DELL on 2019/11/29 14:28
*/
@Setter
@Getter
public class TcList {
private String xuzhi;
private String image;
private String name;
// private List xiangqing;
private String price;
// private List shanghu;
private String yishou;
private String disCount;
private String stroePrice;
//private String id;
}
servce层 注意不要导错包!
import com.haozhuo.datag.model.Store;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
-
Created by DELL on 2019/11/27 11:34
*/
@Component
public class StoreService {
public static final String COLLECTION_NAME = “store”; //指定集合名字@Autowired
private MongoTemplate mongoTemplate;public List get(String city,String area,String land){
Query query = Query.query(Criteria.where(“city”).is(city).and(“storelist.area”).is(area).and(“storelist.land”).is(land)); //条件之间用 and连接
List store = mongoTemplate.find(query, Store.class, “store”);
int size = store.size();
System.out.println(size);
return store;
}
}
Controller层
import com.haozhuo.datag.model.Store;
import com.haozhuo.datag.service.StoreService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.List;
/**
-
Created by DELL on 2019/11/27 11:17
*/
@RestController
@RequestMapping(value = “store”)
@EnableSwagger2
public class Contro {@Autowired
private StoreService storeService;@GetMapping("/find")
@ApiOperation(value = “套餐查询”, notes = " city:城市; area:区;land:路")
public List getAll(@RequestParam(value = “city”,defaultValue = “北京”) String city,
@RequestParam(value = “area”,defaultValue = “北京”) String area,
@RequestParam(value=“land”,defaultValue = “北京”) String land){
return storeService.get(city,area,land);
}
}
下面是 pom里 需要的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.6.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>-->
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-core</artifactId>
<version>4.2.1</version>
</dependency>
yml配置
spring:
data:
mongodb:
database: xxx //需要查询的数据库名字
uri: mongodb://admin:password@需要连接的服务器地址:27017
authentication-database: admin //momgo的库名
到此就完毕了!
本文展示了如何在SpringBoot应用中使用MongoDB进行多条件查询。通过定义实体类`Store`和`TcList`,并在service层利用MongoTemplate编写查询逻辑,实现了根据城市、区和路进行查询的功能。在Controller层提供了RESTful API供外部调用。
4784

被折叠的 条评论
为什么被折叠?



