JAVA网络爬虫
HttpClient

导航

 

SpringBoot集成MongoDB

配置文件

  1. pom.xml

    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-mongodb</artifactId>
      <version>1.10.9.RELEASE</version>
    </dependency>
    
  2. application.yml

    server:
      port: 31001
    spring:
      application:
        name: xc‐service‐manage‐cms
      # MongoDB配置
      data:
        mongodb:
          uri: mongodb://root:123@localhost:27017
          database: xc_cms
    
  3. 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层

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

实体类

  1. 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;
    
    }
    

测试

  1. 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);
        }
    
    }
    
posted on 2020-10-31 14:43  gmlgxx  阅读(51)  评论(0)    收藏  举报