zoukankan      html  css  js  c++  java
  • IDEA创建SpringBoot项目整合JPA,连接Oracle数据库,使用Swagger进行测试

    一、信息

    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!

  • 相关阅读:
    深入理解ThreadLocal
    synchronized与Lock的区别与使用
    1亿个数中找出最小的100个数--最小堆
    B+/-Tree原理(mysql索引数据结构)
    深入理解token
    shiro(java安全框架)
    第一次项目上Linux服务器(四:CentOS6下Mysql数据库的安装与配置(转))
    第一次项目上Linux服务器(三:安装Tomcat及相关命令)
    第一次项目上Linux服务器(二:——安装jdk)
    第一次项目上Linux服务器(一:远程连接服务器)
  • 原文地址:https://www.cnblogs.com/N1ckeyQu/p/11677063.html
Copyright © 2011-2022 走看看