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:123@localhost: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);
}