SpringBoot集成MongoDB
配置文件
-  
pom.xml
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.10.9.RELEASE</version> </dependency> -  
application.yml
server: port: 31001 spring: application: name: xc‐service‐manage‐cms # MongoDB配置 data: mongodb: uri: mongodb://root:123@localhost:27017 database: xc_cms -  
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!--定义日志文件的存储地址,使用绝对路径--> <property name="LOG_HOME" value="/Users/xiaoge/Downloads/CMSPROJECT/logs"/> <!-- Console 输出设置 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> <charset>utf8</charset> </encoder> </appender> <!-- 按照每天生成日志文件 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <fileNamePattern>${LOG_HOME}/xc.%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 异步输出 --> <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --> <discardingThreshold>0</discardingThreshold> <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --> <queueSize>512</queueSize> <!-- 添加附加的appender,最多只能添加一个 --> <appender-ref ref="FILE"/> </appender> <logger name="org.apache.ibatis.cache.decorators.LoggingCache" level="DEBUG" additivity="false"> <appender-ref ref="CONSOLE"/> </logger> <logger name="org.springframework.boot" level="DEBUG"/> <root level="info"> <!--<appender-ref ref="ASYNC"/>--> <appender-ref ref="FILE"/> <appender-ref ref="CONSOLE"/> </root> </configuration> 
Dao层
-  
CmsPageRepository
package com.xuecheng.manage_cms.dao; import com.xuecheng.framework.domain.cms.CmsPage; import org.springframework.data.mongodb.repository.MongoRepository; /** * @Author: 潇哥 * @DateTime: 2020/10/18 下午2:35 * @Description: 这里使用的是 springframework.data.mongodb这个包 */ // MongoRepository: 第一个泛型实体类, 第二个泛型实体类中的id public interface CmsPageRepository extends MongoRepository<CmsPage, String> { // 根据页面名称来查询 public CmsPage findByPageName(String pageName); // 根据页面名称-站点id-页面路径查询 public CmsPage findByPageNameAndSiteIdAndPageWebPath(String pageName, String siteId, String pageWebPath); } 
实体类
-  
CmsPage
package com.xuecheng.framework.domain.cms; import lombok.Data; import lombok.ToString; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.util.Date; import java.util.List; /** * @Author: mrt. * @Description: * @Date:Created in 2018/1/24 10:04. * @Modified By: */ @Data @ToString // MongoDB中的注解对应的是MongoDB中的cms_page集合 @Document(collection = "cms_page") public class CmsPage { /** * 页面名称、别名、访问地址、类型(静态/动态)、页面模版、状态 */ //站点ID private String siteId; //页面ID @Id private String pageId; //页面名称 private String pageName; //别名 private String pageAliase; //访问地址 private String pageWebPath; //参数 private String pageParameter; //物理路径 private String pagePhysicalPath; //类型(静态/动态) private String pageType; //页面模版 private String pageTemplate; //页面静态化内容 private String pageHtml; //状态 private String pageStatus; //创建时间 private Date pageCreateTime; //模版id private String templateId; //参数列表 private List<CmsPageParam> pageParams; //模版文件Id // private String templateFileId; //静态文件Id private String htmlFileId; //数据Url private String dataUrl; } 
测试
-  
CmsPageRepositoryTest
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.*; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; import java.util.Optional; /** * @Author: 潇哥 * @DateTime: 2020/10/18 下午2:43 * @Description: TODO */ @SpringBootTest // 它会扫描启动类下的所有包, 获取代理对象 @RunWith(SpringRunner.class) public class CmsPageRepositoryTest { @Autowired private CmsPageRepository cmsPageRepository; @Test public void testFindAll() { List<CmsPage> list = cmsPageRepository.findAll(); for (CmsPage cmsPage : list) { System.out.println(cmsPage); } } /** * 自定义查询条件 */ @Test public void testFindAllByExample() { int page = 0; int size = 10; // 分页查询 Pageable pageable = PageRequest.of(page, size); // 自定义条件 CmsPage cmsPage = new CmsPage(); // 设置站点id条件 cmsPage.setSiteId("5a751fab6abb5044e0d19ea1"); // 设置模板id条件 cmsPage.setTemplateId("5a962b52b00ffc514038faf7"); // 模糊查询轮播 cmsPage.setPageAliase("轮播"); // 条件匹配器 ExampleMatcher matching = ExampleMatcher.matching(); // 指定pageAliase为包含, 所以只要这个字段的值包含轮播就ok matching = matching.withMatcher("pageAliase", ExampleMatcher.GenericPropertyMatchers.contains()); // ExampleMatcher.GenericPropertyMatchers.contains() 包含关键字 // ExampleMatcher.GenericPropertyMatchers.startsWith() 前缀匹配 // 定义Example Example<CmsPage> example = Example.of(cmsPage, matching); // 查询 Page<CmsPage> list = cmsPageRepository.findAll(example, pageable); List<CmsPage> content = list.getContent(); System.out.println(content); } /** * 分页查询 */ @Test public void testFindPage() { // 分页参数 int page = 0; // 从0开始 int size = 10; Pageable pageable = PageRequest.of(page, size); Page<CmsPage> list = cmsPageRepository.findAll(pageable); for (CmsPage cmsPage : list) { System.out.println(cmsPage); } } /** * 修改 */ @Test public void testUpdate() { // 查询对象 Optional<CmsPage> optional = cmsPageRepository.findById("5abefd525b05aa293098fca6"); // 判断是否为空: true不为空, false为空 if (optional.isPresent()) { CmsPage cmsPage = optional.get(); cmsPage.setPageAliase("ddd"); // 修改 cmsPageRepository.save(cmsPage); } } /** * 根据页面名称查询 */ @Test public void testFindByPageName() { CmsPage cmsPage = cmsPageRepository.findByPageName("index.html"); System.out.println(cmsPage); } } 
                
            
        
浙公网安备 33010602011771号