在Spring Boot中使用Mongodb,首先导入依赖库:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>连接配置
## 阿里云副本实例连接 # spring.data.mongodb.uri=mongodb://账号:密码@dds-primary-pub.mongodb.rds.aliyuncs.com:3717,dds-secondary-pub.mongodb.rds.aliyuncs.com:3717/默认数据库?replicaSet=实例高可用连接地址的唯一标识ID # spring.data.mongodb.database=默认数据库 # 本机单节点实例spring.data.mongodb.uri=mongodb://localhost:27017/默认数据库 logging.level.root=info # 打印SQL logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG 实体定义:
import lombok.Data;
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.Serial;
import java.io.Serializable;
import java.util.Date;
@Data
@Document("note")
public class Note implements Serializable {
@Serial
private static final long serialVersionUID = 5975169180210838347L;
// 主键自动生成
@Id
private String id;
private String name;
@Field("type")import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Query;
private int type;
@Field("created_at")
private Date createdAt;
}
Repository定义:
import java.util.Date; import java.util.List;
public interface NoteRepository extends MongoRepository<Note, String> { // sort 1:asc,-1:desc // 注意引号的使用,否则会引起查询不到数据的问题 @Query(value = "{'created_at':{$gte:?0,$lte:?1}}", sort = "{ created_at : -1 }") List<Note> findByCreateDTime(Date startDate, Date endDate);
@Query(value = "{'name':{$regex:?0}}") List<Note> findByNameRegex(String name);
@Query(value = "{'name':?0}") List<Note> findByName(String name); public long count(); } 入门整理,Service层就省略了,放到Controller import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; 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.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.Date; import java.util.List;
import static java.lang.String.format;
@RestController @RequestMapping("/note") @Slf4j public class NoteController {
@Autowired private NoteRepository noteRepository;
@Autowired private MongoTemplate mongoTemplate;
// http://localhost:8080/note/list @GetMapping("/list") public Page<Note> getPageList() { return noteRepository.findAll(Pageable.ofSize(10)); }
// http://localhost:8080/note/id/64fa7d50c96b8b64535a04f9 @GetMapping("/id/{id}") public Note getListById(@PathVariable String id) { return noteRepository.findById(id).orElseThrow(RuntimeException::new); }
// http://localhost:8080/note/date/start/2018-11-07 @GetMapping("/date/start/{date}") public List<Note> getListByCreatedTime(@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) { // 复杂逻辑,建议使用这个方法 Query query = new Query(); query.addCriteria(Criteria.where("created_at").gte(date)); List<Note> users = mongoTemplate.find(query, Note.class); return users; }
@GetMapping("/date/range/{start}/{end}") public List<Note> getListByCreatedTimeUsQuery(@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") Date start, @PathVariable(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date end) { if (end == null) { end = new Date(); } return noteRepository.findByCreateDTime(start, end); }
// http://localhost:8080/note/name/start/甲 @GetMapping("/name/start/{name}") public List<Note> getListByStartName(@PathVariable String name) { return noteRepository.findByNameRegex(format("^%s", name)); }
// http://localhost:8080/note/name/end/ 标签:name,Spring,org,boot,springframework,mongodb,import,data From: https://www.cnblogs.com/terry-cc/p/17708967.html