首先用IntelliJ IDEA新建Springboot项目,然后在pom.xml中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
在application.properties文件中添加
spring.data.mongodb.uri=mongodb://user:password@ip:port/database
spring.data.mongodb.database=database
然后根据mongo内的数据新建脚本
//可用@Document方式与mongodb的collection绑定
//@Document(collection="collection")
public class Sample {
private String name;
private String age;
private String code;
public String getName() {
return name;
}
public void setName (String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge (String age) {
this.age = age;
}
public String getCode() {
return code;
}
public void setCode (String code) {
this.code = code;
}
}
然后是mongo数据查询
@Component
public class SampleRepositoryImpl implements SampleRepository {
//如果前面用了@Document注释,这里就不需要COLLECTION了
private static final String COLLECTION = "collection";
@Autowired
private MongoTemplate mongoTemplate;
@Override
//查找单条数据
public Sample findOneSample(String item, String value) {
Query query=new Query(Criteria.where(item).is(value));
return mongoTemplate.findOne(query , Sample.class, COLLECTION);
}
@Override
//查找多条数据
public List<Sample> findMultiSample(String item, String value) {
Query query=new Query(Criteria.where(item).is(value));
return mongoTemplate.find(query , Sample.class, COLLECTION);
}
@Override
//查找所有数据
public List<Sample> findAll() {
return mongoTemplate.findAll(Sample.class, COLLECTION);
}
@Override
//字符串型日期查找
public List<Sample> findByDate(String dateItem, String startDate, String endDate) {
Query query=new Query(Criteria.where(dateItem).gte(startDate).lte(endDate));
return mongoTemplate.find(query, Sample.class, COLLECTION);
}
@Override
//多条件查询
public List<Sample> findByMultiItem(HashMap<String, String> hashMap) {
Query query=new Query();
for (String item: hashMap.keySet()) {
String value = hashMap.get(item);
query.addCriteria(Criteria.where(item).is(value));
}
return mongoTemplate.find(query, Sample.class, COLLECTION);
}
@Override
//按条件计数
public int count(String item, String value) {
Query query=new Query(Criteria.where(item).is(value));
return (int) mongoTemplate.count(query, Sample.class, COLLECTION);
}
@Override
//多条件计数
public int countByMultiItem(HashMap<String, String> hashMap) {
Query query=new Query();
for (String item: hashMap.keySet()) {
String value = hashMap.get(item);
query.addCriteria(Criteria.where(item).is(value));
}
return (int) mongoTemplate.count(query, Sample.class, COLLECTION);
}
@Override
//数据分页
public List<Sample> findByPage(int pageIndex, int pageSize, String orderBy) {
if (pageIndex < 0) {
pageIndex = 0;
}
if (pageSize < 10) {
pageSize = 10;
}
Query query = new Query();
Pageable pageable = PageRequest.of(pageIndex, pageSize);
query.with(pageable);
query.with(Sort.by(Sort.Order.desc(orderBy)));
return mongoTemplate.find(query, Sample.class, COLLECTION);
}
}
新建接口文件
public interface SampleRepository {
public Sample findOneSample(String item, String value);
public List<Sample> findMultiSample(String item, String value);
public List<Sample> findAll();
public List<Sample> findByDate(String dateItem, String startDate, String endDate);
public List<Sample> findByMultiItem(HashMap<String, String> hashMap);
public int count(String item, String value);
public int countByMultiItem(HashMap<String, String> hashMap);
public List<Sample> findByPage(int pageIndex, int pageSize, String orderBy);
}
分页查询sort会有内存限制,推荐提前做索引。