Springboot工程中操作mongoDB資料庫
阿新 • • 發佈:2018-12-10
Springboot工程中操作mongoDB資料庫
引入mongodb的jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
配置mongodb的資料庫連線
spring:
application:
name: xc‐service‐manage‐cms
data :
mongodb:
uri: mongodb://root:[email protected]:27017
database: xc_cms
springboot中為我們提供了一個操作mongodb的jar類MongoRepository<T, ID>,在Dao中只要繼承了該類就可以操作mongodb資料庫
T:代表與mongoDB資料庫對應的pojo類
public interface CmsPageRepository extends MongoRepository<CmsPage,String> {
}
編寫測試類來測試mongodb的dao類
增加
使用.save()方法
@SpringBootTest
@RunWith(SpringRunner.class)
public class CmsPageRepositoryTest {
@Autowired
private CmsPageRepository cmsPageRepository;
//測試增加
@Test
public void savePage(){
CmsPage cmsPage = new CmsPage();
cmsPage.setPageName("測試頁面");
cmsPage. setDataUrl("00000");
cmsPage.setPageAliase("testPage");
cmsPage.setPageCreateTime(new Date());
cmsPageRepository.save(cmsPage);
}
}
刪除
根據id進行刪除
使用.deleteById(“id”);
//測試刪除
@Test
public void deletePage(){
cmsPageRepository.deleteById("5c0a32e6411435ad6bdec9b2");
}
修改
修改的思路就是先查詢,然後新增
//測試修改
@Test
public void updatePage(){
/**
關於Optional: Optional是jdk1.8引入的型別,Optional是一個容器物件,它包括了我們需要的物件,使用isPresent方法判斷所包
含物件是否為空,isPresent方法返回false則表示Optional包含物件為空,否則可以使用get()取出物件進行操作。 Optional的優點是:
1、提醒你非空判斷。
2、將物件非空檢測標準化。
*/
Optional<CmsPage> optional = cmsPageRepository.findById("5c0a351b411435b714f5abb8");
if(optional.isPresent()){
CmsPage cmsPage = optional.get();
cmsPage.setPageName("頁面測試");
cmsPageRepository.save(cmsPage);
}
}
查詢
MongoDB提供了類似於springDataJPA的自定義查詢方法規則
按照findByXXX,findByXXXAndYYY,CountByXXXAndYYY這樣的查詢規則進行查詢
//按照id進行查詢
T findById("xxxxxxxxx");
//按照id和名字進行查詢,注意前面的欄位要與後面的字串進行對應
T findByIdAndName("xxxxxxxx","xxxxxxxx");
//按照id和名字統計數量
int countByIdAndName("xxxxxxx","xxxxxxxx");
//根據id和名稱進行分頁查詢
Page<T> findByIdAndName("xxxxxxxx","xxxxxxxx",Pageable pageable);
栗子:
public interface CmsPageRepository extends MongoRepository<CmsPage,String> {
//根據siteId和pageName進行分頁查詢
Page<CmsPage> findBySiteIdAndPageName(String siteId, String pageName, Pageable pageable);
}
//查詢測試
public void findById(){
int page = 0;
int size = 10;
Pageable pageable = PageRequest.of(page,size);
Page<CmsPage> cmsPages = cmsPageRepository.findBySiteIdAndPageName("5a751fab6abb5044e0d19ea1", "課程詳情頁面", pageable);
int num = cmsPages.getSize();
System.out.println(num);
}