完善类并实现简单的增删改查操作
操作步骤延续上一天的项目。
步骤一 创建springboot启动类
在com.atnanning.servicemsc包下创建启动类MscApplication,并增添注解@SpringBootApplication。
@SpringBootApplication
public class MscApplication {
public static void main(String[] args) {
SpringApplication.run(MscApplication.class, args);
}
}
注意创建的路径在com.atnanning.servicemsc下。
步骤二 编写后台管理api接口
在包controller的McsUserController类中编写以下代码,用来查询数据库中的数据。
@Autowired
private McsUserService mcsUserService;
@GetMapping
public List<McsUser> list(){
return mcsUserService.list(null);
}
如果此时直接运行启动类,会出现以下错误。
解决方案是添加@MapperScan注解,首先创建包config,在包中创建配置类McsConfig,在类中添加以下两个注解:@Configuration和@MapperScan。代码如下:
@Configuration
@MapperScan("com.atnanning.servicemsc.mapper")
public class MscConfig {
}
之后点击运行启动类,启动成功后,在网页输入http://localhost:8001/servicemcs/mcsuser
,端口8001后面的内容查看controller类即可。
最终可以在网页端看到数据库中的数据:
步骤三 实现删除功能
与上面在controller中查询方式类似,在controller中实现删除功能。
在McsUserController中编写以下代码:
@DeleteMapping("{id}")
public boolean removeById(@PathVariable String id){
return mcsUserService.removeById(id);
}
同时由于我们采用的删除方式是逻辑删除(逻辑删除的含义是不做出真实的删除,删除时将is_deleted从0设置为1,便实现了逻辑删除),在entity中的逻辑修改符增添注解@TableLogic:
@ApiModelProperty(value = "逻辑删除 1(true), 0(false)")
@TableLogic
private Boolean isDeleted;
在配置类McsConfig中增添逻辑删除插件:
/**
* 逻辑删除插件
*/
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
删除时需要传入参数id,我们借助swagger来实现,这样便于前后端分离开发。所以步骤四是用来配置swagger,配置完成后,再进行删除操作。
步骤四 部署Swagger
1.在crowdsensing_parent下创建子模块common. 与之前创建service子模块一样,选择maven工程。同样删除src。
2.在common的pom.xml中导入以下依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>provided </scope>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<scope>provided </scope>
</dependency>
<!--lombok用来简化实体类:需要安装lombok插件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided </scope>
</dependency>
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<scope>provided </scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<scope>provided </scope>
</dependency>
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- spring2.X集成redis所需common-pool2
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.6.0</version>
</dependency>-->
</dependencies>
3.在common下创建孙子模块service_base.
4.在service_base- ->src - ->main- - >java中创建包com.atnanning.servicebase,并在包中创建Swagger的配置类SwaggerConfig,在类中复制以下内容:
@Bean
public Docket webApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("webApi")
.apiInfo(webApiInfo())
.select()
.paths(Predicates.not(PathSelectors.regex("/admin/.*")))
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build();
}
private ApiInfo webApiInfo(){
return new ApiInfoBuilder()
.title("网站-课程中心API文档")
.description("本文档描述了课程中心微服务接口定义")
.version("1.0")
.contact(new Contact("Helen", "http://atguigu.com", "55317332@qq.com"))
.build();
}
5.在字模块service中的pom.xml中引入service_base,复制以下内容:
<dependency>
<groupId>com.atnanning</groupId>
<artifactId>service_base</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
6.在servicemcs的启动类McsApplication中加入注解:
// An highlighted block
@ComponentScan(basePackages = {"com.atnanning"})
完成上述操作后,运行McsApplication启动类,在浏览器中输入http://localhost:8001/swagger-ui.html
,若出现以下情况,一种可能的原因是未在启动类McsApplication中增添注解@ComponentScan(basePackages = {“com.atnanning”}),另一种是未在SwaggerConfig中增添注解@Configuration和@EnableSwagger2。
正常启动后的界面是:
可以看到之前写的查询方法和删除方法。
输入100,点击try it out。
返回的结果是true(其实100这个id数据库中没有,这个应该是个bug,不论有没有数据,只要功能正常,删除都会返回true,但不影响整体效果)