CMS 03

4.4 导入CMS 数据库

导入cms数据库:
使用Studio3T软件导入cms数据库

1、创建xc_cms数据库

2、导入cms数据库
右键数据库,点击导入数据库 

打开窗口,选择第一个json。
下一步,选择要导入的数据文件(json文件) 

下一步操作即可完成。
导入成功:

5 页面查询接口定义

5.1 定义模型

5.1.1 需求分析

在梳理完用户需求后就要去定义前后端的接口,接口定义后前端和后端就可以依据接口去开发功能了。
本次定义页面查询接口,本接口供前端请求查询页面列表,支持分页及自定义条件查询方式。
具体需求如下:
1、分页查询CmsPage集合下的数据
2、根据站点Id、模板Id、页面别名查询页面信息
3,接口基于HttpGet请求,响应Json数据

5.1.2 模型类介绍

接口的定义离不开数据模型,根据前边对需求的分析,整个页面管理模块的数据模型如下:

 页面信息如下:

首先使用lombok 会方便很多,使开发比较方便,

现在说下Lombok 怎么配置生效

Lombok是一个实用的java工具,使用它可以消除java代码的臃肿,Lombok提供一系列的注解,使用这些注解可以不用定义getter/setter、equals、构造方法等,它会在编译时在字节码文件自动生成这些通用的方法,简化开发人员的工作。
项目官方地址:https://www.projectlombok.org/
比如上节创建的UserTest模型,@Data注解可以自动生成getter/setter方法,@ToString生成tostring方法。

使用方法:
1、在项目中添加Lombok的依赖
作用:项目在编译时根据Lombok注解生成通用方法。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

2、在IDEA开发工具中添加Lombok插件
作用:使用IDEA开发时根据Lombok注解生成通用方法,不报错。

 常用方法:

@Data、@ToString、@Document注解表示什么意思?
@Data、@ToString:是Lombok提供的注解,下边会介绍。
@Document:是Spring Data  mongodb提供的注解,最终CMS的开发会使用Mongodb数据库。

5.2 定义接口

5.2.1 定义请求及相应类型,返回结果类

1、定义请求模型QueryPageRequest,此模型作为查询条件类型
为后期扩展需求,请求类型统一继承RequestData类型。

@Data
public class QueryPageRequest {
    //接收页面查询的查询条件
    //站点id
    //站点id
    @ApiModelProperty("站点id")
    private String siteId;
    //页面ID
    private String pageId;
    //页面名称
    private String pageName;
    //别名
    private String pageAliase;
    //模版id
    private String templateId;
    //....
}

2,响应结果类型,分页查询统一使用QueryResponseResult

@Data
@ToString
public class QueryResponseResult extends ResponseResult {

    QueryResult queryResult;

    public QueryResponseResult(ResultCode resultCode,QueryResult queryResult){
        super(resultCode);
       this.queryResult = queryResult;
    }

}

5.2.2 定义接口

在Api接口工程专门定义接口,在Api工程单独定义接口的原因如下:

1、接口集中管理
2、Api工程的接口将作为各微服务远程调用使用。

页面查询接口定义如下:

public interface CmsPageControllerApi {
    public QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest) ;
}

这个接口是Controller 层实现的接口,类似于CmsPageController implements  CmsPageControllerApi

6.页面查询服务端开发

6.1 创建CMS服务工程

6.1.1 创建cms工程结构

创建maven 工程,cms工程的名称为xc-service-manage-cms,父工程为xc-framework-parent

pom.xml 如下:

 

 由于cms 工程要连接mongodb所以需要在cms服务端工程添加如下依赖:

项目使用spring data mongodb 操作mongodb 数据库

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

2,创建基本的包结构:

com.xuecheng.manage.cms.config:配置类目录,数据库配置,MQ配置等

com.xuecheng.manage.cms.dao:dao接口目录

com.xuecheng.manage.service:service 类目录

com.xuecheng.manage_cms.web.controller:controller 类目录

3,配置文件

在classpath 下配置application.yml

server:
    port:31001
spring:
    application:
        name:xc‐service‐manage‐cms
data:
    mongodb:
        uri:mongodb://root:123@localhost:27017
database:xc_cms

日志配置文件:另外从课程资料下“cms工程配置文件”中拷贝logback-spring.xml,此文件为工程的日志配置文件。

4,springBoot启动类

SpringBoot 应用需要创建一个应用启动类,启动过程中会扫描Bean并注入spring 容器

注意:此类创建在本工程com.xuecheng.manage_cms包下:(注意在manage_cms 根目录下

 注意启动类中的注解一定要写

@SpringBootApplication
@EntityScan("com.xuecheng.framework.domain.cms")//扫描实体类
@ComponentScan(basePackages={"com.xuecheng.api"})//扫描接口
@ComponentScan(basePackages={"com.xuecheng.manage_cms"})//扫描本项目下的所有类
public class ManageCmsApplication {
    public static void main(String[] args){
        SpringApplication.run(ManageCmsApplication.class,args);
    }
}

 6.1.2 测试Controller 

使用 springMVC 完成接口实现开发,这里暂时使用测试数据,稍后会让controller调用service来查询数据。

解释:接口上用{page},在参数上一定要用@PathVariable(""),而不是用@RequestParam(""),

因为@PathVariable("")

通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)

6.2 Dao

6.2.1 分页查询 测试

6.2.1.1 定义Dao 接口

本项目使用Spring Data Mongodb 完成Mongodb数据库的查询,Spring Data Mongodb提供一套快捷操作 mongodb 的方法。

创建Dao.继承MongoRepository,并指定实体类型和主键类型

public interface CmsPageRepository extends MongoRepository<CmsPage,String>

}

解释:CmsPageRepository 这个接口类名字是自己随便起的,MongoRepository 类是我们上面注入的maven Mongodb repository包下面的类。类有两个形参,第一个为Dao层查询的对象,第二个为主键类型。

6.2.1.2 编写测试类

在test 包下创建于main 包下相同的路径

测试类要添加 @SpringBootTest 和 @RunWith(SpringRunner.class) 的注解,启动测试类会从main下找springBoot 启动类,加载spring 容器。

代码如下:

6.2.1.3分页查询测试 不写了,太简单

6.2.2 基础方法测试 

在Dao层接口继承了MongoRepository,在MongoRepository 中定义了很多现成的方法,如save,delete 等,通过下面的代码来测试一下

就是MongoRepository 类下已经有的方法,

不仅仅只有这些 MongoRepository 还继承了好多类,下面有很多接口。

6.2.3.4 自定义Dao 方法

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

public interface CmsPageRepository extends MongoRepository<CmsPage,String> {
    //根据页面名称查询
    CmsPage findByPageName(String pageName);


}

类似于这种,不用写sql ,便可直接调用,查询数据

    //根据页面名称查询
    @Test
    public void testfindByPageName(){
        CmsPage cmsPage = cmsPageRepository.findByPageName("preview_297e7c7c62b888f00162b8a965510001.html");
        System.out.println(cmsPage);
    }
}

在test 包下写的测试类

6.6 接口开发规范

6.6.1 Api 请求及响应规范

1,get 请求时,采用key/value 格式请求,Spring MVC 可采用基本类型的变量接收,也可采用对象接收。

2、Post请求时,可以提交form表单数据(application/x-www-form-urlencoded)和Json数据(Content-Type=application/json),文件等多部件类型(multipart/form-data)三种数据格式,SpringMVC接收Json数据使用@RequestBody注解解析请求的json数据。

3,响应结果统一信息为:是否成功,操作代码,提示信息及自定义数据。

4,响应结果统一格式为json。

6.6.2 Api 定义约束

Api 定义使用Spring MVC 来完成,由于此接口后期将作为微服务远程调用使用。在定义接口时,有如下限制:

1,@PathVariable 统一指定参数名称,如:@PathVariable("id") 这个用于请求url 有占位符,和参数一致时使用

2,@RequestParma("")统一指定参数名称,

7, 页面查询接口测试

本章介绍两个工具:Swagger 和Postman.

7.1 Swagger 

7.1.1.1 swagger 介绍

自行查询

7.1.1.2 Swagger 常用注解

在spring boot 集成swagger 后,添加swagger 注解即可生成swagger 接口,常用注解如下:

@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiModelProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiError:发生错误返回的信息
@ApiImplicitParam:一个请求参数
@ApiImplicitParams:多个请求参数

@ApiImplicitParam的属性如下:

 

@Api(value="cms页面管理接口",description = "cms页面管理接口,提供页面的增、删、改、查")
public interface CmsPageControllerApi {
    //页面查询
    @ApiOperation("分页查询页面列表")
    @ApiImplicitParams({
            @ApiImplicitParam(name="page",value = "页码",required=true,paramType="path",dataType="int"),
            @ApiImplicitParam(name="size",value = "每页记录数",required=true,paramType="path",dataType="int")
    })
    public QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest);
}

多敲敲

7.1.4 Swagger 接口测试

Swagger 接口生成工作原理:

1、系统启动,扫描到api工程中的Swagger2Configuration类
2、在此类中指定了包路径com.xuecheng,找到在此包下及子包下标记有@RestController注解的controller类
3、根据controller类中的Swagger注解生成接口文档。

启动cms服务工程,查看接口文档,请求:http://localhost:31001/swagger-ui.html

swagger 传参测试接口:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vegetari

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值