1.环境搭建,准备工作
(1)创建数据库
(2)创建项目完整结构
(3)父工程springboot,子工程maven
(4)父工程pom设置版本,添加pom
#版本
2.2.1.RELEASE
#包
pom
(4)删除父工程dependencies依赖,只放管理依赖的版本
#添加 确定依赖的版本
1.8
0.0.1-SNAPSHOT
3.0.5
2.0
2.7.0
2.8.3
2.10.1
3.17
1.3.1
2.6
4.5.1
0.7.0
4.3.3
3.1.0
2.15.2
1.4.11
1.4.11
1.2.28
2.8.2
20170516
1.7
1.1.0
zx
0.2.2.RELEASE
配置依赖管理
#dependencyManagement依赖管理
org.springframework.cloud
spring-cloud-dependencies
Hoxton.RELEASE
pom
import
org.springframework.cloud
spring-cloud-alibaba-dependencies
${cloud-alibaba.version}
pom
import
com.baomidou
mybatis-plus-boot-starter
${mybatis-plus.version}
org.apache.velocity
velocity-engine-core
${velocity.version}
io.springfox
springfox-swagger2
${swagger.version}
io.springfox
springfox-swagger-ui
${swagger.version}
com.aliyun.oss
aliyun-sdk-oss
${aliyun.oss.version}
joda-time
joda-time
${jodatime.version}
org.apache.poi
poi
${poi.version}
org.apache.poi
poi-ooxml
${poi.version}
commons-fileupload
commons-fileupload
${commons-fileupload.version}
commons-io
commons-io
${commons-io.version}
org.apache.httpcomponents
httpclient
${httpclient.version}
com.google.code.gson
gson
${gson.version}
io.jsonwebtoken
jjwt
${jwt.version}
com.aliyun
aliyun-java-sdk-core
${aliyun-java-sdk-core.version}
com.aliyun.oss
aliyun-sdk-oss
${aliyun-sdk-oss.version}
com.aliyun
aliyun-java-sdk-vod
${aliyun-java-sdk-vod.version}
com.aliyun
aliyun-java-vod-upload
${aliyun-java-vod-upload.version}
com.aliyun
aliyun-sdk-vod-upload
${aliyun-sdk-vod-upload.version}
com.alibaba
fastjson
${fastjson.version}
org.json
json
${json.version}
commons-dbutils
commons-dbutils
${commons-dbutils.version}
com.alibaba.otter
canal.client
${canal.client.version}
在父工程下创建service,创建后添加
pom
将相关依赖引入
org.springframework.boot
spring-boot-starter-test
test
com.atguigu
service_base
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter-web
com.baomidou
mybatis-plus-boot-starter
mysql
mysql-connector-java
org.apache.velocity
velocity-engine-core
io.springfox
springfox-swagger2
io.springfox
springfox-swagger-ui
org.projectlombok
lombok
org.apache.poi
poi
org.apache.poi
poi-ooxml
commons-fileupload
commons-fileupload
org.apache.httpcomponents
httpclient
commons-io
commons-io
com.google.code.gson
gson
junit
junit
4.12
在service2下创建service-edu2
创建application.properties配置文件
# 服务器端口号
service.port=8001
# 服务名
spring.application.name=service-edu
# 环境设置dev,test,prod
spring.profiles.active=dev
# 数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
# mybaties日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
代码生成器,生成相关的层级结构
代码生成器的依赖
org.apache.velocity
velocity-engine-core
test里面使用代码生成器,构建数据库对应表的层级结构
package com.atguigu.test;
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;
import org.junit.Test;
/**
* @author
* @since 2018/12/13
*/
public class CodeGenerator2 {
@Test
public void run() {
// 1、创建代码生成器
AutoGenerator mpg = new AutoGenerator();
// 2、全局配置
GlobalConfig gc = new GlobalConfig();
//得到当前项目文件夹的路径
String projectPath = System.getProperty("user.dir");
//这里的 projectPath 路径最好改为绝对路径
gc.setOutputDir("D:\\Codeware\\ideaCode\\guli\\guli_parent\\service\\service_edu" + "/src/main/java");
gc.setAuthor("testjava");
//生成后是否打开代码的文件夹
gc.setOpen(false);
//重新生成时文件是否覆盖,比如写了代码后,再次生成
gc.setFileOverride(false);
//去掉Service接口的首字母I,命名规则
gc.setServiceName("%sService");
//主键策略,对应实体类中设置的类型,long-ID_WORKER,字符串-ID_WORKER_STR
gc.setIdType(IdType.ID_WORKER_STR);
//定义生成的实体类中日期类型,datetime-date
gc.setDateType(DateType.ONLY_DATE);
gc.setSwagger2(true);//开启Swagger2模式
mpg.setGlobalConfig(gc);
// 3、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8&characterEncoding=utf-8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
// 4、包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.atguigu");//生成的包名
pc.setModuleName("eduservice"); //包名.模块名.
pc.setController("controller");
pc.setEntity("entity");
pc.setService("service");
pc.setMapper("mapper");
mpg.setPackageInfo(pc);
// 5、策略配置,根据表生成出代码
StrategyConfig strategy = new StrategyConfig();
// 多张表,""
strategy.setInclude("edu_course","edu_course_description","edu_chapter","edu_video");
strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉_
strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作
strategy.setRestControllerStyle(true); //restful api风格控制器
strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符
mpg.setStrategy(strategy);
// 6、执行
mpg.execute();
}
}
整合swagger
1.创建一个公共的类common来管理,引入依赖
pom
org.springframework.boot
spring-boot-starter-web
provided
com.baomidou
mybatis-plus-boot-starter
provided
org.projectlombok
lombok
provided
io.springfox
springfox-swagger2
provided
io.springfox
springfox-swagger-ui
provided
org.springframework.boot
spring-boot-starter-data-redis
然后在common下,创建service_base,创建swagger的配置类,进行bean配置
@Configuration
@EnableSwagger2
public class SwaggerConfig2 {
@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",
"[email protected]"))
.build();
}
}
在要使用该功能的模块下引入
com.atguigu
service_base2
0.0.1-SNAPSHOT
在service_edu的启动类上加
@ComponentScan(basePackages = {"com.atguigu"})
三个注意:swagger配置类,mapper扫描,@ComponentScan(basePackages = {"cn.lf"})扫描
配置config类扫描mapper
并将其注册为 MyBatis 的 Mapper。这样,在使用 Mapper 接口时,就不需要手动编写对应的实现类了。