• 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
    epositorymysqlmysql-connector-java5.1.36mysql-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  点击右上那个启动按钮;

     

  • 相关阅读:
    Debian 安装配置(包括kdevelop)
    linux matlab2016 安装
    Qt5.7 无法输入中文问题
    阻塞方法与InterruptedException
    java的null
    原子性、可见性、有序性与指令重排序
    物理机内存模型与java内存模型
    java构造函数总结
    什么时候需要用super
    重载与重写
  • 原文地址:https://www.cnblogs.com/yangji0202/p/12346131.html
Copyright © 2020-2023  润新知