项目(一)springboot多模块工程(3)集成mybatis-plus实现基本crud、集成swagger2接口管理

  • 集成mybatis-plus
    • 依赖
    • 基本配置
    • 数据源配置
    • 基于BaseMapper的crud
      • 基本类
  • 集成swagger2
  • 结语
  • 代码地址

集成mybatis-plus

依赖

聚合父POM中添加依赖管理。
项目(一)springboot多模块工程(3)集成mybatis-plus实现基本crud、集成swagger2接口管理_第1张图片
在common工程中依赖mybatis-plus相关包。
项目(一)springboot多模块工程(3)集成mybatis-plus实现基本crud、集成swagger2接口管理_第2张图片

基本配置

  • application.yml
mybatis-plus:
  # 如果是放在src/main/java目录下 classpath:/com/yourpackage/*/mapper/*Mapper.xml
  # 如果是放在resource目录 classpath:/mapper/*Mapper.xml
  mapper-locations: classpath*:/mapper/**/*Mapper.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.chan.hen.*.entity
  global-config:
    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
    id-type: 0
    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
    field-strategy: 1
    #驼峰下划线转换
    #db-column-underline: true
    #刷新mapper 调试神器
    refresh-mapper: true
    #数据库大写下划线转换
    #capital-mode: true
    # Sequence序列接口实现类配置
    #key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator
    #逻辑删除配置(下面3个配置)
    #logic-delete-value: 1
    #logic-not-delete-value: 0
    #sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
    #自定义填充策略接口实现
    #meta-object-handler: com.baomidou.springboot.MyMetaObjectHandler
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
    #配置JdbcTypeForNull
    jdbc-type-for-null: 'null'
  • 启动类增加mapper包扫描注解。
@MapperScan("com.chan.hen.mapper")

数据源配置

  • 在web模块依赖mysql驱动。已经在父POM中做了依赖管理,版本已指定。这里就不需要写了。
  	<dependency>
		<groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
   	</dependency> 
  • yml配置文件中配置数据源。
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/flash?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
    username: root
    password: 123456

基于BaseMapper的crud

基本类

common工程中建立com.chan.hen.base包。

  • 建立实体基本类,BaseHenEntity。
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;

import java.io.Serializable;
import java.util.Date;

public class BaseHenEntity implements Serializable {

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 创建人
     */
    @TableField(value = "create_user", fill = FieldFill.INSERT)
    private Long createUser;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.UPDATE)
    private Date updateTime;

    /**
     * 更新人
     */
    @TableField(value = "update_user", fill = FieldFill.UPDATE)
    private Long updateUser;

}
  • 基于BaseMapper 建立基本类。注意引用的是com.baomidou.mybatisplus.core.mapper.BaseMapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface IBaseMapper<T extends BaseHenEntity> extends BaseMapper<T> {
}
  • 建立服务接口基本类,IBaseService。
import com.baomidou.mybatisplus.extension.service.IService;

public interface IBaseService<T extends BaseHenEntity> extends IService<T> {
}
  • 建立服务接口实现基本类,BaseServiceImpl。
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

public class BaseServiceImpl<M extends IBaseMapper<T>,T extends BaseHenEntity>
        extends ServiceImpl<M , T>
        implements IBaseService<T> {
}
  • 建立控制器基本类,BaseController。

  • 建好基本类之后就可以通过继承这些类以少量代码实现一些通用对外的接口了。 建一个sys_user 表。继承基类建立相应的mapper service 及controller 。

集成swagger2

  • pom依赖,ui放到web模块,swagger2放到common模块。
		<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
  • 配置。
import com.google.common.base.Predicates;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @Description swagger2配置文件
 * @Author chanyu
 * @Date 2020/5/30 22:59
 * @Version 1.0
 **/
@Configuration
@EnableSwagger2
public class Swagger2Config {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .pathMapping("/")
                .select() // 选择那些路径和api会生成document
                .apis(RequestHandlerSelectors.any())// 对所有api进行监控
                //不显示错误的接口地址
                .paths(Predicates.not(PathSelectors.regex("/error.*")))//错误路径不监控
                .paths(PathSelectors.regex("/.*"))// 对根下所有路径进行监控
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("hen后台管理")
                .contact("chanyu")
                .description("hen接口文档")
                .termsOfServiceUrl("NO terms of service")
                .license("The Apache License, Version 2.0")
                .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
                .version("v1.0")
                .build();
    }
}
  • 简单注解,例:
  	@ApiOperation(value = "批量保存" ,notes = "批量保存")
    @PostMapping(value = "saveOrUpdateBatch" )
    public R saveOrUpdateBatch(@RequestBody List<T> entityList){
        boolean success=baseService.saveOrUpdateBatch(entityList);
        return HenResult.ok(success);
    }
  • 启动工程,访问localhost:8080/swagger-ui.html。
    项目(一)springboot多模块工程(3)集成mybatis-plus实现基本crud、集成swagger2接口管理_第3张图片
  • 调试接口是否成功。
  • 增加2条数据。
    项目(一)springboot多模块工程(3)集成mybatis-plus实现基本crud、集成swagger2接口管理_第4张图片
  • 分页查询,数据少了,看不到效果,不过查询没问题。
    项目(一)springboot多模块工程(3)集成mybatis-plus实现基本crud、集成swagger2接口管理_第5张图片
  • 删除id1,2的数据。
    项目(一)springboot多模块工程(3)集成mybatis-plus实现基本crud、集成swagger2接口管理_第6张图片
  • 根据字段查询,这里没有设置数据,默认查所有。因为已经删除了,所以执行成功查不到数据。
    项目(一)springboot多模块工程(3)集成mybatis-plus实现基本crud、集成swagger2接口管理_第7张图片

结语

至此基本curd接口准备完毕,下次探索mybatis-plus根据模板自动生成代码功能。目的是实现基于表设计基本不用编码就生成基本crud接口功能。

代码地址

https://github.com/flashyunchen/hen.git

你可能感兴趣的:(多模块,mybatis,idea)