springboot完整项目(mybatis+swagger+Generator插件)

  • Post author:
  • Post category:其他


后续持续更新…




1.poi.xml




配置



<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.9.RELEASE</version>
</parent> 
版本不宜超过2.2.0.RELEASE,这个问题折磨的好几天
<dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.44</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!--传入参数 数据校验-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <!--swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.2.2</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.60</version>
        </dependency>
         <!--servlet容器,启动去除tomcat-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--springboot启动替换为jetty-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
    </dependencies>

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.44</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <configurationFile>src/main/generated/generator.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>false</overwrite>
                </configuration>
            </plugin>
        </plugins>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.p12</include>
                    <include>**/*.crt</include>
                    <include>**/*.html</include>
                    <include>**/*.cer</include>
                    <include>**/*.pfx</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.yaml</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.txt</include>
                    <include>**/*.ini</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>




2.A




pp




livation.yml




配置



server:
  servlet:
    context-path: /${spring.application.name}
spring:
  application:
    name: test
  http:
    encoding:
      force: true
      charset: UTF-8
      enabled: true
  # 同一容器部署多springboot实例
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/mytest?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
    username: root
    password: root

mybatis:
  mapper-locations: classpath*:com/example/test/dao/mapping/**/*.xml
  configuration:
    # 启动驼峰命名映射数据库表,例userId对应user_id
    map-underscore-to-camel-case: true
    # insert返回主键
    use-generated-keys: true
    ## swagger配置
    swagger:
      enabled: true

3.创建generator.xml

新建目录src/main/下文件名为 generated

<?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">
<generatorConfiguration>
    <context id="mysql" defaultModelType="flat" targetRuntime="MyBatis3">
        <property name="autoDelimitKeywords" value="true"/>
        <property name="javaFileEncoding" value="UTF-8"/>
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据库设置-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3306/mytest"
                        userId="root"
                        password="root">
        </jdbcConnection>
        <!--dao层实体类生成位置-->
        <javaModelGenerator targetPackage="com.example.test.dao.entity"
                            targetProject="src/main/generated">
        </javaModelGenerator>
        <!--dao层xx.xml设生成位置-->
        <sqlMapGenerator targetPackage="com.example.test.dao.mapping"
                         targetProject="src/main/generated"/>
        <!--dao层mapper设生成位置-->
        <javaClientGenerator targetPackage="com.example.test.dao.mapper" type="XMLMAPPER"
                             targetProject="src/main/generated"/>
        <!-- ================================================================================================== -->
        <!--一个table对应数据库一个表-->
        <table tableName="user" domainObjectName="User"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">
        </table>
    </context>
</generatorConfiguration>

4.configuration文件夹下创建Swagger

@Configuration
@EnableSwagger2
@ConditionalOnProperty(prefix = "swagger", name = "enabled", havingValue = "true", matchIfMissing = true)
public class Swagger {
    /**
     * 创建API应用
     * apiInfo() 增加API相关信息
     * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
     * 本例采用指定扫描的包路径来定义指定要建立API的目录。
     *
     * @return
     */
    @Bean
    public Docket createRestApi() {

//登录验证暂时用不到
// List<Parameter> pars = new ArrayList<>();
// ParameterBuilder tokenPar = new ParameterBuilder();
// tokenPar.name("token")
// .description("用户token")
// .modelRef(new ModelRef("string"))
// .parameterType("header")
// .required(false)
// .build();
// pars.add(tokenPar.build());


        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
//修正Byte转string的Bug
                .directModelSubstitute(Byte.class, Integer.class)
// .globalOperationParameters(pars)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.test.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    /**
     * 创建该API的基本信息(这些基本信息会展现在文档页面中)
     * 访问地址:http://项目实际地址/swagger-ui.html
     *
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Spring Boot中使用Swagger2构建RESTful APIs")
                .description("Swagger API 接口文档")
                .contact("Yaoyao.Mei")
                .version("1.0")
                .build();
    }
}

备注:

@ConditionalOnProperty


(


prefix = “swagger”, name = “enabled”, havingValue = “true”, matchIfMissing = true


)





作用:在application.yml






可以设置是否开启

参考链接:

https://blog.csdn.net/dyc87112/article/details/73739411

@RequiresRoles(value = {“leader”, “user”}, logical = Logical.OR)   //角色权限设置

关于

Swagger使用的注解及其说明,请参考




https://blog.csdn.net/sanyaoxu_2/article/details/80555328


5.创建controller,service;  mybatis通过Generator 插件自动生成

@RestController
@RequestMapping("/test")
public class TestController {
    @Autowired
    TestService testService;

    @RequestMapping(value = "/getUser", method = RequestMethod.GET)
    public GetUserVoRespVo getUserName(@RequestBody GetUserVoReqVo req) {
        return testService.query(req);
    }

    @RequestMapping(value = "/get", method = RequestMethod.GET)
    public String get() {
        return testService.query();
    }
}
public interface TestService {
     GetUserVoRespVo query(GetUserVoReqVo req);
     String query();
}

@Service
public class TestServiceImpl implements TestService {

    @Autowired
    private UserMapperExt userMapperExt;

    @Override
    public GetUserVoRespVo query(GetUserVoReqVo req) {
        User user = userMapperExt.selectAll();
        GetUserVoRespVo userVoRespVo = new GetUserVoRespVo();
        BeanUtils.copyProperties(user, userVoRespVo);
        return userVoRespVo;
    }

    @Override
    public String query() {
        User user = userMapperExt.selectAll();
        System.out.println(user);
        return user.getName();
    }
}




7.启动类:



@SpringBootApplication
@MapperScan("com.example.test.dao.mapper")
public class YaoApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(YaoApplication.class);
}
    public static void main(String[] args) {
        SpringApplication.run(YaoApplication.class, args);
    }

启动类继承SpringBootServletInitializer,并复写configure()方法,可以避免jetty容器启动报错.

@MapperScan


(


“com.example.test.dao.mapper”


),启动时扫描



项目结构如图:



解释:


@MapperScan


(


“com.example.test.dao.mapper”


)



mybatis


:


mapper-locations


: classpath*:com/example/test/dao/mapping/**/*.xml



poi






build






resoucese:


我们用到的资源文件(各种xml,properties,xsd文件)都放在src/main/resources下面,利用maven打包时,maven能把这些资源文件打包到相应的jar或者war里。

servlet-api

HttpServletRequest和HttpServletResponse 等对象的,但是tomcat里也有,运行时要用tomcat自己的,所以引用maven包

<dependency>

<groupId>org.apache.tomcat</groupId>

<artifactId>tomcat-jsp-api</artifactId>

<version>3.0</version>

<scope>provided</scope>

</dependency>

编写servlet时用我们自己引用的包,而运行时用tomcat自己的包,这样就不用冲突了,又能正常开发代码.

看完记得点赞哦!!!


ion.


class,


args




)




;




}}




版权声明:本文为weixin_44145478原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。