SpringBoot整合MongoDB

添加依賴(實際上能夠在建立SpringBoot工程步驟中勾選MongoDB選項)java

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

代碼

實體類(Document)web

package com.example.demo.entity; import lombok.Getter; import lombok.Setter; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.index.CompoundIndex; import org.springframework.data.mongodb.core.index.CompoundIndexes; import org.springframework.data.mongodb.core.mapping.Document; import java.io.Serializable; @Getter @Setter // 指定集合名稱
@Document(collection = "my_book") // 建立索引
@CompoundIndexes(@CompoundIndex(name = "my_index", def = "{name:1}")) public class Book implements Serializable { @Id private Long id; private String name; private Double price; }

請求實體spring

package com.example.demo.entity; import lombok.Getter; import lombok.Setter; @Getter @Setter public class BookRequest { private Integer pageNo; private Integer pageSize; }

測試代碼mongodb

package com.example.demo.controller; import com.example.demo.entity.Book; import com.example.demo.entity.BookRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; 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.data.mongodb.core.query.Update; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.regex.Pattern; @RestController public class DefaultController { @Autowired private MongoTemplate mongoTemplate; /** * 添加 * @param book * @return
     */ @RequestMapping("/add") public List<Book> add(@RequestBody Book book){ mongoTemplate.insert(book); return mongoTemplate.findAll(Book.class); } /** * 根據name更新,只更新匹配到的第一個數據 * @param book * @return
     */ @RequestMapping("/updateFirst") public List<Book> updateFirst(@RequestBody Book book){ Query query = new Query(Criteria.where("name").is(book.getName())); Update update = new Update().set("name",book.getName()).set("price", book.getPrice()); mongoTemplate.updateFirst(query, update, Book.class); return mongoTemplate.find(query, Book.class); } /** * 根據name更新,更新匹配到的所有數據 * @param book * @return
     */ @RequestMapping("/updateMulti") public List<Book> updateMulti(@RequestBody Book book){ Query query = new Query(Criteria.where("name").is(book.getName())); Update update = new Update().set("name",book.getName()).set("price", book.getPrice()); mongoTemplate.updateMulti(query, update, Book.class); return mongoTemplate.find(query, Book.class); } /** * 根據name更新匹配到的第一條數據,並返回未更新以前的數據 * @param book * @return
     */ @RequestMapping("/findAndModify") public Book findAndModify(@RequestBody Book book){ Query query = new Query(Criteria.where("name").is(book.getName())); Update update = new Update().set("name",book.getName()).set("price", book.getPrice()); return mongoTemplate.findAndModify(query, update, Book.class); } /** * 根據id刪除數據 * @param book * @return
     */ @RequestMapping("/remove") public List<Book> remove(@RequestBody Book book){ Query query = new Query(Criteria.where("id").is(book.getId())); mongoTemplate.remove(query, Book.class); return mongoTemplate.findAll(Book.class); } /** * 根據name查詢,匹配全部數據刪除並返回 * @param book * @return
     */ @RequestMapping("/findAllAndRemove") public List<Book> findAllAndRemove(@RequestBody Book book){ Query query = new Query(Criteria.where("name").is(book.getName())); return mongoTemplate.findAllAndRemove(query, Book.class); } /** * 根據name查詢,匹配第一條數據刪除並返回 * @param book * @return
     */ @RequestMapping("/findAndRemove") public Book findAndRemove(@RequestBody Book book){ Query query = new Query(Criteria.where("name").is(book.getName())); return mongoTemplate.findAndRemove(query, Book.class); } /** * 根據id查詢 * @param book * @return
     */ @RequestMapping("/findById") public Book findById(@RequestBody Book book){ return mongoTemplate.findById(book.getId(), Book.class); } /** * 條件查詢 * @param book * @return
     */ @RequestMapping("/find") public List<Book> find(@RequestBody Book book){ Query query = new Query(Criteria.where("price").lt(book.getPrice())); return mongoTemplate.find(query, Book.class); } /** * and查詢 * @param book * @return
     */ @RequestMapping("/findOfAnd") public List<Book> findOfAnd(@RequestBody Book book){ Query query = new Query( new Criteria().andOperator( Criteria.where("name").is(book.getName()), Criteria.where("price").is(book.getPrice()) ) ); return mongoTemplate.find(query, Book.class); } /** * or查詢 * @param name1 * @param name2 * @return
     */ @RequestMapping("/findOfOr") public List<Book> findOfOr(@RequestParam("a") String name1, @RequestParam("b") String name2){ Query query = new Query( new Criteria().orOperator( Criteria.where("name").is(name1), Criteria.where("name").is(name2) ) ); return mongoTemplate.find(query, Book.class); } /** * 模糊查詢 * @param book * @return
     */ @RequestMapping("/findOfLike") public List<Book> findOfLike(@RequestBody Book book){ Pattern pattern = Pattern.compile("^.*" + book.getName() + ".*$", Pattern.CASE_INSENSITIVE); Query query = new Query(Criteria.where("name").regex(pattern)); return mongoTemplate.find(query, Book.class); } /** * 條件查詢,只返回一個 * @param book * @return
     */ @RequestMapping("/findOne") public Book findOne(@RequestBody Book book){ Query query = new Query(Criteria.where("name").is(book.getName())); return mongoTemplate.findOne(query, Book.class); } /** * 查詢全部 * @return
     */ @RequestMapping("/findAll") public List<Book> findAll(){ return mongoTemplate.findAll(Book.class); } /** * 分頁查詢(注意它的頁碼從0開始) * @param request * @return
     */ @RequestMapping("/findAllPageable") public Page<Book> findAllPageable(@RequestBody BookRequest request){ // 排序
        Sort sort = Sort.by(Sort.Direction.DESC, "price"); // 頁碼信息
        PageRequest pageRequest = PageRequest.of(request.getPageNo(), request.getPageSize(), sort); // 查詢
        Query query = new Query(); long count = mongoTemplate.count(query, Book.class); List<Book> books = mongoTemplate.find(query.with(pageRequest), Book.class); Page<Book> bookPage = new PageImpl<>(books, pageRequest, count); return bookPage; } }

application.propertiesapp

# If you use the Mongo 3.0 Java driver, spring.data.mongodb.host and spring.data.mongodb.port are not supported. In such cases, spring.data.mongodb.uri should be used to provide all of the configuration # 若是你使用Mongo 3.X 版本,不支持 spring.data.mongodb.host and spring.data.mongodb.port,而應該用spring.data.mongodb.uri # 格式:mongodb://user:secret@mongo1.example.com:12345,mongo2.example.com:23456/test
# 默認:mongodb://localhost/test
spring.data.mongodb.uri=mongodb://localhost:27017/test
#spring.data.mongodb.host=localhost #spring.data.mongodb.port=27017

啓動後便可在postman裏測試了,好比dom

相關文章
相關標籤/搜索