A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 谷粒姐姐 于 2018-12-19 16:26 编辑

5.2定义接口
5.2.1 定义请求及响应类型
1、定义请求模型QueryPageRequest,此模型作为查询条件类型 为后期扩展需求,请求类型统一继承RequestData类型。
[AppleScript] 纯文本查看 复制代码
[mw_shl_code=applescript,true]package com.xuecheng.framework.domain.cms.request; 
  import com.xuecheng.framework.model.request.RequestData;
 import lombok.Data; 
  @Data public class QueryPageRequest extends RequestData {  
   //站点id  
   private String siteId;   
  //页面ID  
   private String pageId;   
  //页面名称   
  private String pageName;  
   //别名   
  private String pageAliase;   
  //模版id  
  private String templateId;   }  
[/mw_shl_code]
2、响应结果类型,分页查询统一使用QueryResponseResult 5.2.2 定义接口
在Api接口工程专门定义接口,在Api工程单独定义接口的原因如下: 1、接口集中管理
2、Api工程的接口将作为各微服务远程调用使用。
页面查询接口定义如下:
[AppleScript] 纯文本查看 复制代码
[mw_shl_code=applescript,true]public interface CmsPageControllerApi {   
    public QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest) ;  
 }
[/mw_shl_code]
此接口编写后会在CMS服务工程编写Controller类实现此接口。
  6 页面查询服务端开发 6.1 创建CMS服务工程 6.1.1 创建CMS工程结构
创建maven工程, CMS工程的名称为 xc-service-manage-cms,父工程为xc-framework-parent。
pom.xml如下:
[AppleScript] 纯文本查看 复制代码
[mw_shl_code=applescript,true] 
public interface CmsPageControllerApi {   
    public QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest) ;  
 }  
<?xml version="1.0" encoding="UTF‐8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"          xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance"     
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
 [url]http://maven.apache.org/xsd/maven[/url]‐4.0.0.xsd">  
   <parent>       
  <artifactId>xc‐framework‐parent</artifactId>   
      <groupId>com.xuecheng</groupId>    
     <version>1.0‐SNAPSHOT</version>      
   <relativePath>../xc‐framework‐parent/pom.xml</relativePath>  
   </parent>    
 <modelVersion>4.0.0</modelVersion>    
   <artifactId>xc‐service‐manage‐cms</artifactId>    
   <dependencies>      
   <dependency>       
      <groupId>com.xuecheng</groupId>     
        <artifactId>xc‐service‐api</artifactId>       
      <version>1.0‐SNAPSHOT</version>  
       </dependency>      
   <dependency>
            <groupId>com.xuecheng</groupId>

[AppleScript] 纯文本查看 复制代码
  <artifactId>xc‐framework‐model</artifactId>      
       <version>1.0‐SNAPSHOT</version>    
     </dependency>      
   <dependency>    
        <groupId>com.xuecheng</groupId>     
        <artifactId>xc‐framework‐utils</artifactId>    
         <version>1.0‐SNAPSHOT</version>   
      </dependency>   
      <dependency>    
         <groupId>com.xuecheng</groupId>    
         <artifactId>xc‐framework‐common</artifactId>  
           <version>1.0‐SNAPSHOT</version>     
    </dependency>      
   <dependency>       
      <groupId>org.springframework.boot</groupId>      
       <artifactId>spring‐boot‐starter‐web</artifactId>  
       </dependency>      
   <dependency>       
      <groupId>org.springframework.boot</groupId>       
      <artifactId>spring‐boot‐starter‐freemarker</artifactId>   
      </dependency>     
    <dependency>       
      <groupId>org.springframework.boot</groupId>        
     <artifactId>spring‐boot‐starter‐data‐mongodb</artifactId> 
        </dependency>      
   <dependency>        
     <groupId>org.springframework.boot</groupId>     
        <artifactId>spring‐boot‐starter‐amqp</artifactId>    
     </dependency>   
      <dependency>       
      <groupId>com.squareup.okhttp3</groupId>      
       <artifactId>okhttp</artifactId>      
   </dependency>      
   <dependency>      
       <groupId>org.springframework.boot</groupId>    
         <artifactId>spring‐boot‐starter‐test</artifactId>      
   </dependency>   
  </dependencies>  
 </project>
[/mw_shl_code]
由于cms工程要连接mongodb所以需要在在cms服务端工程添加如下依赖: 项目使用spring data mongodb操作mongodb数据库
[AppleScript] 纯文本查看 复制代码
[mw_shl_code=applescript,true]<dependency> 
    <groupId>org.springframework.boot</groupId>   
  <artifactId>spring‐boot‐starter‐data‐mongodb</artifactId> </dependency>
[/mw_shl_code]
2、创建基本的包结构: com.xuecheng.manage_cms.config:配置类目录,数据库配置、MQ配置等
com.xuecheng.manage_cms.dao:dao接口目录 com.xuecheng.manage_cms.service:service类目录
com.xuecheng.manage_cms.web.controller:controller类目录
工程结构如下:


、配置文件
在classpath下配置application.yml
[AppleScript] 纯文本查看 复制代码
[mw_shl_code=applescript,true]server:  
 port: 31001 spring:  
 application:    
 name: xc‐service‐manage‐cms  
 data:  
   mongodb: 
      uri:  mongodb://root:123@localhost:27017    
   database: xc_cms
[/mw_shl_code]
另外从课程资料下“cms工程配置文件”中拷贝logback-spring.xml,此文件为工程的日志配置文件。  
4、SpringBoot 启动类

Spring Boot应用需要创建一个应用启动类,启动过程中会扫描Bean并注入spring 容器 注意:此类创建在本工程com.xuecheng.manage_cms包下 :
[AppleScript] 纯文本查看 复制代码
[mw_shl_code=applescript,true] package com.xuecheng.manage_cms.service;
   import com.xuecheng.framework.domain.cms.CmsPage;
 import com.xuecheng.framework.domain.cms.request.QueryPageRequest;
 import com.xuecheng.framework.model.response.CommonCode;
 import com.xuecheng.framework.model.response.QueryResponseResult; 
import com.xuecheng.framework.model.response.QueryResult;
 import com.xuecheng.manage_cms.dao.CmsPageRepository;
 import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.data.domain.Page; 
import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;  
 @Service public class PageService { 
    @Autowired   
 CmsPageRepository cmsPageRepository; 
      /**    
  * 页面列表分页查询   
   * @param page 当前页码  
    * @param size 页面显示个数   
   * @param queryPageRequest 查询条件  
    * @return 页面列表  
    */     public QueryResponseResult findList(int page,int size,QueryPageRequest queryPageRequest){     
    if (queryPageRequest == null) {   
          queryPageRequest = new QueryPageRequest();   
      }     
    if (page <= 0) {      
       page = 1;       
  }    
     page = page ‐ 1;//为了适应mongodb的接口将页码减1  
       if (size <= 0) {    
         size = 20;     
    }   
      //分页对象    
     Pageable pageable = new PageRequest(page, size);  
      //分页查询    
     Page<CmsPage> all = cmsPageRepository.findAll(pageable);   
      QueryResult<CmsPage> cmsPageQueryResult = new QueryResult<CmsPage>();   
      cmsPageQueryResult.setList(all.getContent());      
   cmsPageQueryResult.setTotal(all.getTotalElements());     
    //返回结果      
   return new QueryResponseResult(CommonCode.SUCCESS,cmsPageQueryResult);  
   }
}

[/mw_shl_code]

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马