代码生成器、Swagger接口文档

代码生成器

链接:https://pan.baidu.com/s/11bUEZEampgVKmDoz1_FQcQ
提取码:yyds
在这里插入图片描述
在这里插入图片描述
** 要么 直接引入依赖**

依赖

<parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>2.3.12.RELEASE</version>
 </parent>

 <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>

<dependencies>
     <!--  mybatis-plus-generator-->
     <dependency>
         <groupId>com.baomidou</groupId>
         <artifactId>mybatis-plus-generator</artifactId>
         <version>3.4.1</version>
     </dependency>
     <!--   mybatis plus-->
     <dependency>
         <groupId>com.baomidou</groupId>
         <artifactId>mybatis-plus-boot-starter</artifactId>
         <version>3.5.3</version>
     </dependency>
     <!--  velocity 模板引擎, Mybatis Plus 代码生成器需要-->
     <dependency>
         <groupId>org.apache.velocity</groupId>
         <artifactId>velocity-engine-core</artifactId>
         <version>2.3</version>
     </dependency>
     <!--   mysql-connector-java   -->
     <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
     </dependency>
     <!--swagger-->
     <dependency>
         <groupId>io.springfox</groupId>
         <artifactId>springfox-swagger2</artifactId>
         <version>2.7.0</version>
     </dependency>
     <dependency>
         <groupId>io.springfox</groupId>
         <artifactId>springfox-swagger-ui</artifactId>
         <version>2.7.0</version>
     </dependency>

     <!--lombok-->
     <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <version>1.18.24</version>
     </dependency>
     <!--druid 数据库连接池-->
     <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>druid-spring-boot-starter</artifactId>
         <version>1.2.15</version>
     </dependency>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
 </dependencies>

 <build>
     <plugins>
         <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-compiler-plugin</artifactId>
             <version>3.8.1</version>
             <configuration>
                 <source>1.8</source>
                 <target>1.8</target>
                 <encoding>UTF-8</encoding>
             </configuration>
         </plugin>
         <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
     </plugins>
     <!-- 项目打包时会将java目录中的*.xml文件也进行打包 -->
     <resources>
         <resource>
             <directory>src/main/java</directory>
             <includes>
                 <include>**/*.xml</include>
             </includes>
             <filtering>false</filtering>
         </resource>
     </resources>
 </build>

yaml

spring:
  # 配置数据源信息
  datasource:
    druid:
      # 高并发场景下,万一遇到网络问题,可能会导致你跟数据库的Socket连接异常无法通信
      connect-timeout: 1200 # 建立TCP连接的超时时间
      socket-timeout: 3000  # 发送请求后 等待响应的超时时间
      max-wait: 1000 # 1s以上, 大量线程获取不到连接,1s左右快速就失败
      maxActive: 20 # 确实有高并发场景,可以适当增加到3~5倍,不超过 100
      initial-size: 5 # 初始化大小
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.111.101:3306/reggie?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
    username: root
    password: 123456

mybatis-plus:
  configuration:
    # 数据库字段:user_id===>实体属性:userId
    map-underscore-to-camel-case: true
    # 打印sql日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      id-type: ASSIGN_ID # 采用 分布式ID策略


插件

安装:mybatisX
在这里插入图片描述
Maven 的pom文件:

<build>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.1</version>
              <configuration>
                  <source>1.8</source>
                  <target>1.8</target>
                  <encoding>UTF-8</encoding>
              </configuration>
          </plugin>
          <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
      </plugins>
      <!-- 项目打包时会将java目录中的*.xml文件也进行打包 -->
      <resources>
          <resource>
              <directory>src/main/java</directory>
              <includes>
                  <include>**/*.xml</include>
              </includes>
              <filtering>false</filtering>
          </resource>
      </resources>
  </build>

代码


import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class AppTest {
    public static void main(String[] args) {
        // 1、创建代码生成器
        AutoGenerator mpg = new AutoGenerator ();
        // 2、全局配置
        GlobalConfig gc = new GlobalConfig ();
        // 当前模块src目录 所在路径,tes是模块名
        String projectPath = "E:\\ProjectDirectory\\tes";
        // 输出位置是当前项目的 src/main/java目录
        gc.setOutputDir (projectPath + "/src/main/java");
        gc.setOpen (false); // 生成后是否打开资源管理器
        gc.setFileOverride (false); // 重新生成时文件是否覆盖
        /*
         * mp生成service层代码,默认接口名称 第一个字母有 I
         * UcenterService
         * */
        gc.setServiceName ("%sService"); // 去掉Service接口的首字母I
        gc.setAuthor ("小丁"); // 设置作者
        gc.setIdType (IdType.ASSIGN_ID); // 主键策略
        gc.setDateType (DateType.ONLY_DATE);// 定义生成的实体类中日期类型
        gc.setSwagger2 (true);// 开启Swagger2模式
        mpg.setGlobalConfig (gc);
        // 3、数据源配置
        DataSourceConfig dsc = new DataSourceConfig ();
        // url设置
        dsc.setUrl ("jdbc:mysql://192.168.111.101/reggie?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true");
        dsc.setDriverName ("com.mysql.cj.jdbc.Driver");
        // 账号密码
        dsc.setUsername ("root");
        dsc.setPassword ("123456");
        dsc.setDbType (DbType.MYSQL);
        mpg.setDataSource (dsc);
        // 4、包配置
        // 生成的包名 Parent.ModuleName===>org.example
        PackageConfig pc = new PackageConfig ();
        pc.setParent ("org");
        pc.setModuleName ("example"); //模块名
        // 设置 对应的目录名
        pc.setController ("controller");
        pc.setEntity ("entity");
        pc.setService ("service");
        pc.setMapper ("mapper");
        mpg.setPackageInfo (pc);
        // 5、策略配置
        StrategyConfig strategy = new StrategyConfig ();
        // 根据表名生成,多个使用逗号隔开
        strategy.setInclude ("address_book", "category");
        // 数据库表 映射到 实体的命名策略
        // 表名:category===>实体类:Category
        strategy.setNaming (NamingStrategy.underline_to_camel);
        // 生成实体时 去掉表前缀
        strategy.setTablePrefix (pc.getModuleName () + "_");
        // 数据库表字段 映射到实体的命名策略
        // 数据库字段:user_id===>实体属性:userId
        strategy.setColumnNaming (NamingStrategy.underline_to_camel);
        // lombok 模型 @Accessors(chain =true) setter链式操作
        strategy.setEntityLombokModel (true);
        // restful api风格控制器
        strategy.setRestControllerStyle (true);
        // url中驼峰转连字符
        strategy.setControllerMappingHyphenStyle (true);
        mpg.setStrategy (strategy);
        // 6、执行
        mpg.execute ();
    }
}

Swagger接口文档

引入依赖


<!--swagger-->
<dependency>
	<groupId>io.springfox</groupId>
	<artifactId>springfox-swagger2</artifactId>
	<version>2.7.0</version>
</dependency>
<dependency>
	<groupId>io.springfox</groupId>
	<artifactId>springfox-swagger-ui</artifactId>
	<version>2.7.0</version>
</dependency>

<!--lombok-->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.24</version>
</dependency>
<!--开发者工具 进行热部署-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-devtools</artifactId>
</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.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * Swagger2配置信息
 */
@Configuration
@EnableSwagger2 // 开启Swagger2
public class Swagger2Config {

    @Bean // 添加一个文档
    public Docket webApiConfig() {

        return new Docket (DocumentationType.SWAGGER_2)
                .groupName ("webApi") // 文档名
                .apiInfo (webApiInfo ())
                .select ()
                //只显示api路径下的页面
                .paths (Predicates.and (PathSelectors.regex ("/api/.*")))
                .build ();

    }

    @Bean  // 添加一个文档
    public Docket adminApiConfig() {

        return new Docket (DocumentationType.SWAGGER_2)
                .groupName ("adminApi") // 文档名
                .apiInfo (adminApiInfo ())
                .select ()
                //只显示admin路径下的页面
                .paths (Predicates.and (PathSelectors.regex ("/admin/.*")))
                .build ();

    }

    private ApiInfo webApiInfo() {

        return new ApiInfoBuilder ()
                .title ("网站-API文档")
                .description ("网站微服务接口定义")
                .version ("1.0")
                .contact (new Contact ("xd", "https://www.hao123.com/", "3440597@qq.com"))
                .build ();
    }

    private ApiInfo adminApiInfo() {

        return new ApiInfoBuilder ()
                .title ("后台管理系统-API文档")
                .description ("后台管理系统微服务接口定义")
                .version ("1.0")
                .contact (new Contact ("xd", "https://www.hao123.com/", "3440597@qq.com"))
                .build ();
    }


}

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

@Data
public class BaseEntity implements Serializable {

    @ApiModelProperty(value = "id")
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") // 格式化日期
    @TableField("create_time")
    private Date createTime;

    @ApiModelProperty(value = "更新时间")
    @TableField("update_time")
    private Date updateTime;

    @ApiModelProperty(value = "逻辑删除(1:已删除,0:未删除)")
    @TableLogic
    @TableField("is_deleted")
    private Integer isDeleted;

    @ApiModelProperty(value = "其他参数")
    @TableField(exist = false) // 说明数据库中 不存在这个字段
    private Map<String, Object> param = new HashMap<> ();
}

实体类

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@ApiModel(description = "医院设置") // 实体描述信息
@TableName("hospital_set") // 表名
public class HospitalSet extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "医院名称") // 字段描述信息
    @TableField("hosname") // 数据库字段名
    private String hosname;

    @ApiModelProperty(value = "医院编号")
    @TableField("hoscode")
    private String hoscode;

    @ApiModelProperty(value = "api基础路径")
    @TableField("api_url")
    private String apiUrl;

    @ApiModelProperty(value = "签名秘钥")
    @TableField("sign_key")
    private String signKey;

    @ApiModelProperty(value = "联系人姓名")
    @TableField("contacts_name")
    private String contactsName;

    @ApiModelProperty(value = "联系人手机")
    @TableField("contacts_phone")
    private String contactsPhone;

    @ApiModelProperty(value = "状态")
    @TableField("status")
    private Integer status;

}

控制器


@Api(tags = "医院设置管理") // 控制器 描述信息
@RestController
@RequestMapping("/admin/hosp/hospitalSet")
public class HospitalSetController {
    // 注入service
    @Autowired
    private HospitalSetService hospitalSetService;

    //1 查询医院设置表所有信息
    @ApiOperation(value = "获取 所有医院设置") // 方法 描述信息
    @GetMapping("findAll")
    // @ApiParam 参数 描述信息
    public Result findAllHospitalSet(@ApiParam(name = "page", value = "当前页码", required = true) long id) {
        return Result.ok ();
    }
}

效果图
在这里插入图片描述
插件:

MybatisPlus配置类



import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * MybatisPlus配置类
 */
@EnableTransactionManagement  // 事务处理,开启 事务管理器
@Configuration
@MapperScan("com.*.mapper") // 扫描的 mapper路径
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {

        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor ();
        // 分页插件
        interceptor.addInnerInterceptor (new PaginationInnerInterceptor ());
        // 乐观锁插件
        interceptor.addInnerInterceptor (new OptimisticLockerInnerInterceptor ());
        return interceptor;
    }

}

访问:http://localhost:8080/swagger-ui.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值