MongoDB在项目中的使用

导入依赖

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

配置文件:
application.yml

server:
  port: 31001
spring:
  application:
    name: xc-service-manage-cms
  data:
    mongodb:
      uri:  mongodb://localhost:27017
      database: xc_cms

dao层方法类似spring data jpa 继承MongoRepository:

package com.xuecheng.manage_cms.dao;

import com.xuecheng.framework.domain.cms.CmsPage;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface CmsPageRepository extends MongoRepository<CmsPage,String> {

}

增删改,分页方法的测试:

package com.xuecheng.manage_cms.dao;

import com.xuecheng.framework.domain.cms.CmsPage;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;
import java.util.Optional;

@SpringBootTest
@RunWith(SpringRunner.class)
public class CmsPageRepositoryTest {
    //代理对象
    @Autowired
    CmsPageRepository cmsPageRepository;

    @Test
    public void testfindAll(){
        List<CmsPage> all = cmsPageRepository.findAll();
        System.out.println(all);
    }



    //分页查询
    @Test
    public void testfindPage(){
        int page = 0;
        int size = 10;
        Pageable pageable  = PageRequest.of(page,size);
        Page<CmsPage> all = cmsPageRepository.findAll(pageable);
        System.out.println(all);
    }

    //修改
    @Test
    public void update(){
        //optional可以解决空指针异常
        Optional<CmsPage> optional = cmsPageRepository.findById("5a754adf6abb500ad05688d9");
        if(optional.isPresent()){
            CmsPage cmsPage = optional.get();
            //设置修改的值
            cmsPage.setPageAliase("test001");
            cmsPageRepository.save(cmsPage);
        }
    }
	//添加
	@Test
	public void testInsert(){
	    //定义实体类
	    CmsPage cmsPage = new CmsPage();
	    cmsPage.setSiteId("s01");
	    cmsPage.setTemplateId("t01");
	    cmsPage.setPageName("测试页面");
	    cmsPage.setPageCreateTime(new Date());
	    List<CmsPageParam> cmsPageParams = new ArrayList<>();
	    CmsPageParam cmsPageParam = new CmsPageParam();
	    cmsPageParam.setPageParamName("param1");
	    cmsPageParam.setPageParamValue("value1");
	    cmsPageParams.add(cmsPageParam);
	    cmsPage.setPageParams(cmsPageParams);
	    cmsPageRepository.save(cmsPage);
	    System.out.println(cmsPage);
	}

	//删除
	@Test
	public void testDelete() {
	    cmsPageRepository.deleteById("5b17a2c511fe5e0c409e5eb3");
	}
}

注意:

关于Optional:
Optional是jdk1.8引入的类型,Optional是一个容器对象,它包括了我们需要的对象,使用isPresent方法判断所包
含对象是否为空,isPresent方法返回false则表示Optional包含对象为空,否则可以使用get()取出对象进行操作。
Optional的优点是:
1、提醒你非空判断。
2、将对象非空检测标准化。

同Spring Data JPA一样Spring Data mongodb也提供自定义方法的规则,如下:
按照findByXXX,findByXXXAndYYY、countByXXXAndYYY等规则定义方法,实现查询操作。

public interface CmsPageRepository extends MongoRepository<CmsPage,String> {
    //根据页面名称查询
    CmsPage findByPageName(String pageName);
    //根据页面名称和类型查询
    CmsPage findByPageNameAndPageType(String pageName,String pageType);
    //根据站点和页面类型查询记录数
    int countBySiteIdAndPageType(String siteId,String pageType);
    //根据站点和页面类型分页查询
    Page<CmsPage> findBySiteIdAndPageType(String siteId,String pageType, Pageable pageable);
}

自定义页面名称查询

public interface CmsPageRepository extends MongoRepository<CmsPage,String> {
    //自定义页面名称查询
    CmsPage findByPageName(String pageName);
}

测试:

@Test
    public void testPageByName(){
        CmsPage cmsPage = cmsPageRepository.findByPageName("index.html");
        System.out.println(cmsPage);

    }

测试成功
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值