一、信息
IDEA 2019.1
jdk 1.8
Oracle 11.2.0.1.0
二、創建Spring Boot項目
1、選擇JDK
2、根據你的公司名填寫Group名,Artifact名不能包含大寫,IDEA會報告含有非法字符,這一點挺奇怪的
3、選擇依賴,這里我們選擇Spring Data JPA和Spring Web,點擊next
4、對項目名稱稍作修改,點擊finish
5、一定要保持網絡的穩定,項目構建好之后,樹形結構如下。刪去了一些無需關注的分支,提高可讀性
│ .gitignore │ HELP.md │ mvnw │ mvnw.cmd │ PlaySpringBoot2.iml │ pom.xml │ ├───.mvn │ └───wrapper │ maven-wrapper.jar │ maven-wrapper.properties │ MavenWrapperDownloader.java │ └───src ├───main │ ├───java │ │ └───com │ │ └───trkj │ │ Playspringboot2Application.java │ │ │ └───resources │ │ application.properties │ │ │ ├───static │ └───templates └───test └───java └───com └───trkj Playspringboot2ApplicationTests.java
三、連接本地Oracle數據庫
筆者之前一直使用Eclipse,Eclipse連接本地Oracle的步驟如下:
1、在本地安裝Maven和Oracle數據庫
2、使用Maven命令將Oracle添加到本地Maven(由於版權問題,Maven沒有Oracle的依賴)
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar -Dfile=ojdbc6.jar
3、在pom.xml中加入Oracle依賴
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
但這種做法在我更換了IDE之后就不行了,IDEA找不到該依賴
嘗試另一種思路,將oracle驅動直接加入項目的library中,File -> Project Structure -> libraries,點擊+號,選擇Java
在本地目錄中找到Oracle數據庫驅動包
選擇項目,OK
將application.properties文件重命名為application.yml,加入如下內容,填寫你的用戶名和密碼
spring:
datasource:
url: jdbc:oracle:thin:@127.0.0.1:1521:orcl
username:
password:
driver-class-name: oracle.jdbc.driver.OracleDriver
jpa:
show-sql: true
至此配置連接數據庫完畢
四、配置JPA,自動生成實體類
1、在IDEA內添加本地數據庫的連接
打開右側的DataBase,點擊+號,Data Source -> Oracle
填寫Oracle連接信息,尤其注意SID和端口號(如果你更改了)
第一次建立數據庫連接IDEA會要求你下載驅動,點擊下載
各項信息填寫完畢后,如果你的本地Oracle沒問題的話,測試一下連接,成功的話點擊OK
2、新建controller、service、dao、pojo包
3、添加JPA
File -> Project Structure -> Modules,點擊+號,選擇JPA,OK
打開左下角Persistence,右鍵項目名,選擇Generate Persistence Mapping -> By DataBase Schema
選擇我們剛才創建的Data Source,選擇實體類生成在哪個包里,如果你需要在實體類名稱添加前綴或后綴,也可以配置
第一次可能會沒有表出現,點一下刷新按鈕就好了
選擇你需要生成實體類的表
這里筆者生成Dept類和Emp類來進行一下測試
DAO
package com.trkj.dao; import com.trkj.pojo.Dept; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; public interface IDeptDAO extends CrudRepository<Dept, Long> { //根據部門ID獲取部門
@Query("select d from Dept d where d.deptno = ?1") Dept findDeptById(Long id); }
Service
package com.trkj.service; import com.trkj.dao.IDeptDAO; import com.trkj.pojo.Dept; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class DeptService { @Autowired private IDeptDAO deptDAO; public Dept findDeptById(Long id){ return deptDAO.findDeptById(id); } }
Controller
package com.trkj.controller; import com.trkj.pojo.Dept; import com.trkj.service.DeptService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/dept") public class DeptController { @Autowired private DeptService deptService; @GetMapping("/find_dept_by_id") public Dept findDeptById(@RequestParam Long id){ return deptService.findDeptById(id); } }
運行項目,進行測試
五、配置Swagger
如果我們像剛才那樣測試,雖然能得到測試結果,但是,如果一個Controller里有幾十個方法,我們要手動輸入地址幾十次,測試起來就很麻煩了
接口文檔的編寫和維護也是一項巨大工作量,Swagger的出現,幫助我們解決了這些問題
1、添加Swagger依賴
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
2、在項目中新建config包,在包中新建Swagger2Config.java
package com.trkj.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Parameter; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.ArrayList; import java.util.List; @Configuration @EnableSwagger2 public class Swagger2Config { @Bean public Docket createRestApi() { List<Parameter> pars = new ArrayList<Parameter>(); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) .paths(PathSelectors.any()) .build() .globalOperationParameters(pars) .apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("一身青衣 一人攻城 RESTful API") .description("我恨躋身儒聖太晚,我恨轉入霸道太遲") .termsOfServiceUrl("https://www.cnblogs.com/N1ckeyQu/") .version("1.0") .build(); } }
3、對DeptController類稍作修改
在DeptController類上方添加
@Api(value = "部門Controller")
在findDeptById方法上添加
@ApiOperation(value = "根據部門ID找到部門", notes = "根據部門ID找到部門")
不加這兩個注解也可以,加上之后可讀性會更好。運行項目,訪問http://localhost:8080/swagger-ui.html
打開Controller,輸入部門ID,測試一下,enjoy it!