博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Data Mongodb的基本JPA操作
阅读量:2056 次
发布时间:2019-04-28

本文共 3317 字,大约阅读时间需要 11 分钟。

Spring Data Mongodb基础操作

cmsPageRepository是继承了MongoRepository<T, ID>的接口

1 添加

//添加@Testpublic void testInsert(){
//定义实体类 CmsPage cmsPage = new CmsPage(); cmsPage.setSiteId("s01"); cmsPage.setTemplateId("t01"); cmsPage.setPageName("测试页面"); cmsPage.setPageCreateTime(new Date()); List
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);}

2 删除

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

关于Optional:

Optional是jdk1.8引入的类型,Optional是一个容器对象,它包括了我们需要的对象,使用isPresent方法判断所包
含对象是否为空,isPresent方法返回false则表示Optional包含对象为空,否则可以使用get()取出对象进行操作。
Optional的优点是:

  1. 提醒你非空判断。
  2. 将对象非空检测标准化。

3 修改

//修改@Testpublic void testUpdate() {
Optional
optional = cmsPageRepository.findOne("5b17a34211fe5e2ee8c116c9");if(optional.isPresent()){
CmsPage cmsPage = optional.get();cmsPage.setPageName("测试页面01");cmsPageRepository.save(cmsPage);}}

4.自定义查询方法

基础自定义查询

同Spring Data JPA一样Spring Data mongodb也提供自定义方法的规则,如下:

按照findByXXX,findByXXXAndYYY、countByXXXAndYYY等规则定义方法,实现查询操作。

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

基础分页查询

//从0开始int page = 0;int size = 10;//定义分页对象Pageable pageable = PageRequest.of(page, size).first();//查询所有进行分页,可以使用自定义方法代替,但是自定义形参中必须有PageablePage
all = cmsPageRepositoty.findAll(pageable);System.out.println(all);

带有条件的分页查询

//从0开始int page = 0;int size = 10;//定义分页参数Pageable pageable = PageRequest.of(page, size).first();//条件值对象,一般为集合的实体对象CmsPage cmspage = new CmsPage();//设置要查询的站点id(精确查询),直接设置值的情况下是精确匹配//cmspage.setSiteId("5a751fab6abb5044e0d19ea1");//设置模板id条件(精确查询)//cmspage.setTemplateId("5a962b52b00ffc514038faf7");//设置页码别名cmspage.setPageAliase("轮播");//定义条件匹配器/*ExampleMatcher exampleMatcher = ExampleMatcher.matching();//针对pageAliase进行修改匹配为模糊匹配exampleMatcher=exampleMatcher.withMatcher("pageAliase",ExampleMatcher.GenericPropertyMatchers.contains());*///简写,并且更加容易更多针对其他字段的匹配器ExampleMatcher exampleMatcher=ExampleMatcher.matching()    .withMatcher("pageAliase",ExampleMatcher.GenericPropertyMatchers.contains());//ExampleMatcher.GenericPropertyMatchers.contains();//包含关键字(模糊匹配)//ExampleMatcher.GenericPropertyMatchers.startsWith();//前缀匹配,其他的更加调用方法名,即可理解//定义ExampleExample
example = Example.of(cmspage, exampleMatcher);//调用查询所有Page
all = cmsPageRepositoty.findAll(example, pageable);//转换为List并打印List
content = all.getContent();System.out.println(content);
  • Pageable 分页参数对象
  • CmsPage 查询条件实体(自定义)
  • ExampleMatcher 条件匹配器
    • withMatcher(“pageAliase”,ExampleMatcher.GenericPropertyMatchers.contains())
      指定{pageAliase}字段匹配方式

在Spring boot的yml文件中配置MongoDB

spring:  data:    mongodb:      uri: mongodb://127.0.0.1:27017      database: mongodb

转载地址:http://anilf.baihongyu.com/

你可能感兴趣的文章
解决Ubuntu14.04 - 16.10版本 cheese摄像头灯亮却黑屏问题
查看>>
解决Ubuntu 64bit下使用交叉编译链提示error while loading shared libraries: libz.so.1
查看>>
MFC程序添加console窗口+printf打印输出信息
查看>>
VS生成DLL文件供第三方调用
查看>>
Android Studio color和font设置
查看>>
android GLSurfaceView匹配屏幕宽度及视频宽高比设置view大小
查看>>
解决用android Studio开发不能去除标题栏的问题
查看>>
[Python] windows下360急速浏览器获取URL的Headers
查看>>
AndroidStudio 清除无用资源压缩项目大小
查看>>
AndroidStudio导入其他来源项目容易出现的问题
查看>>
VS解决error C2664: “DWORD GetCurrentDirectoryW(DWORD,LPWSTR)”: 无法将参数 2 从“char [260]”转换为“LPWSTR
查看>>
VS项目方便直接配置openCV环境
查看>>
VS项目方便直接配置openCV环境
查看>>
Vs 使用openCV 3.0+ 出错error C2872: “ACCESS_MASK”: 不明确的符号
查看>>
VS 使用#pragma 管理代码块
查看>>
VS判断windows动态链接库是x86还是x64(以vs2015为例)
查看>>
windows下VS2015使用MSVC编译FFmpeg库
查看>>
windows下VS使用FFmpeg被声明为已否决的解决方案
查看>>
Win7 x64环境下Python3.6安装使用提示丢失api-ms-win-crt-runtimel1-1-0.dll
查看>>
c++ Lambda函数
查看>>