Springboot工程中操作mongoDB数据库

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);
     }

猜你喜欢

转载自blog.csdn.net/weixin_43794897/article/details/84934003