代码生成器
链接: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