Springboot + mybatis + React+redux+React-router+antd+Typescript(一): 后台Springboot+Mybatis的搭建


 前言:

  利用實習閑暇時間以及過年這段時間,自己慢慢摸索搭建了一套Springboot+mybatis的后台,React+Redux+React-router+Typescript的前端。

項目已基本完成,現在總結一下搭建開發過程.

       前端github地址:  https://github.com/www2388258980/rty-web

       后台github地址:  https://github.com/www2388258980/rty-service

       項目訪問地址:          http://106.13.61.216:5000/                               賬號/密碼: root/root

 

  Springboot+mybatis后台搭建主要有swagger的配置,mybatis逆向工程:也就是根據已有的表自動生成pojo類,mapper類以及mapper映射文件.

 

准備工作:

  工具: IDEA;

  1. 安裝jdk並配置環境變量,這個不用多說。

  2..需要安裝maven並配置maven環境變量,然后設置本地倉庫,並與IDEA關聯.自行百度,很多。

 

正文:

     1.打開idea,File - - > new - - > project -- > spring Initializr 使用默認的網址搭建springboot項目:

   (1): Group 一般填自己公司所在域名的倒寫,比如百度: https://www.baidu.com/ 就是com.baidu;

   (2): Artifact 一般寫自己本次的項目名字; 

     (3):以上填完以后就會讓你選需要哪些依賴:數據庫用mysql,添加mysql依賴,用到了mybatis,所以添加mybatis依賴,

      使用SpringMVC 開發 web 應用,所以web依賴;

 

  2.接下來配置mybatis逆向工程:

   (1): 在pom.xml中添加mybatis generator插件;

             <!-- mybatis根據表自動生成pojo類插件 1.mvn mybatis-generator:generate 2.mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate [會覆蓋同名文件] -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
            </plugin>            

    (2): 在resource下新建generatorConfig.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!-- mybatis-generator的核心配置文件 -->
<generatorConfiguration>
  <!--
        這里填數據庫驅動包的絕對路徑
  -->
    <classPathEntry location="D:\android\repository\mysql\mysql-connector-java\5.1.36\mysql-connector-java-5.1.36.jar"/>

    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!--
            是否去除所有自動生成的文件的時間戳:
            是否去除所有自動生成文件的注釋:
         -->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--連接數據庫的詳細信息-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3306/rty?serverTimezone=GMT%2B8"
                        userId="xxx"
                        password="xxx">
        </jdbcConnection>

        <!--指定生成的類型為java類型,避免數據庫中number等類型字段 -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!--自動生成的實體的存放包路徑 -->
        <javaModelGenerator targetPackage="com.xxx.xxx.bean" targetProject="./src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!--自動生成的*Mapper.xml文件存放路徑 -->
        <sqlMapGenerator targetPackage="mapper" targetProject="./src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--自動生成的*Mapper.java存放路徑 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.xxx.xxx.mapper"
                             targetProject="./src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>


        <!-- 映射配置 tableName填表名,domainObjectName填生成pojo類的名字-->
        <table tableName="" domainObjectName=""/>

    </context>
</generatorConfiguration>
View Code

      這里是mysql配置文件,oracle的也就是把<classPathEntry>標簽換成oracle驅動包,<jdbcConnection>標簽內容改成連接oracle數據信息;

                然后打開IDEA的控制台: 輸入 mvn mybatis-generator:generate  or  mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate,等待幾秒即可生成.

 

     3. application.properties配置文件: 

#數據庫連接信息
spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxx?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 spring.datasource.username=xxx spring.datasource.password=xxx
#指定端口 server.port
=8888 #指定映射文件存放位置 mybatis.mapper-locations=classpath:/mapper/**/*.xml

 

  4.  Swagger:

      “  Swagger可以生成各種格式的接口文檔,生成多種語言的客戶端和服務端的代碼,以及在線接口調試頁面等等  ”;

   在pom.xml中引入Swagger所需要的依賴:

     <!-- swagger api文檔 -->
        <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>

  

           在程序人口也就是XXApliication類下新建一個config包,新建一個Swagger2類:

package com.asiainfo.rty.config;

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.builders.RequestHandlerSelectors;
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;

@Configuration
@EnableSwagger2
public class Swagger2 {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xxx.xxx.web.controller"))  // 這里填寫的是你controller所在類全包名;
                .paths(PathSelectors.any())
                .build();
    }
/** * apiInfo()用來創建該Api的基本信息 */ private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Spring Boot 測試使用 Swagger2 構建RESTful API") .contact(new Contact("xxx", "https://github.com/www2388258980/rty-service", "")) .description("API描述") .version("1.0") .build(); } }

      這里介紹關於Swagger幾個我常用的幾個注解的用法:

      [1]:  @Api(tags = "xxxx"):用在controller類上,tag中簡單填寫該類是做什么的;

     [2]: @ApiOperation(value = "xxx", notes = "xxx")用在方法上,描述該方法是做什么的;

     [3]:@ApiImplicitParams(value = {@ApiImplicitParam(name = "xxx", value = "xxxxxx....", required = true, paramType = "query")}),用在方法上,描述參數;

 

  5.項目結構就差不多了,不過還需要注意幾點:

   (1): 一般使用@Autowired 注入dao層(也就是mapper包下的類),可是mapper下的文件是自動生成的,沒有被注入到IOC容器中,除了一個個加@Repository的笨方法外,可以再config包下新建一個類:

package com.asiainfo.rty.config;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;

/*
 * 告訴spring為mapper類生成bean對象
 * */
@Configuration
@MapperScan("com.xxx.xxx.mapper")
public class MybatisConfig {
}

           (2): 分別啟動前端后台,前端訪問后台接口會因為瀏覽器的'同源策略'而沒法從后台獲取數據,解決辦法之一就是在controller類上加注解 @CrossOrigin

 

..................................

   啟動可以打開控制台: >   mvn spring-boot:run

   or  點擊右上那個啟動按鈕;

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM