技术控

    今日:0| 主题:63445
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建 ...

[复制链接]
【呆呆著看】 发表于 2016-10-11 22:19:04
1162 28
前言

  最近做回后台开发,重新抓起以前学过的SSM(Spring+Spring MVC+Mybatis),但是发现配置实在过于复杂,好多东西配置起来麻烦,虽然最终是配置出来了,但是还是感觉开发速度跟不上,本来打算切换到jfianl,但是后来发现需要用的几个框架不支持jfianl,如Swagger2(根据代码中的注解生成接口文档和测试页面,非常的方便);同时我也不愿意放弃SpringMVC强大的验证参数模块,jfianl中好像只能手动验证(当然我对jfianl只处于简单的开发,并不是特别熟),而SpringMVC中,直接就能通过注解来确定哪些参数是必须的,哪些不是必须的,这对于写接口的人来说,方便了很多,所以决定还是使用Spring家族的东西,下面先一一介绍下本文的主角们
   Spring boot

   spring-boot是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者
   多年以来, Spring IO 平台饱受非议的一点就是大量的XML配置以及复杂的依赖管理。在2013年的 SpringOne 2GX 会议上,Pivotal的CTO Adrian Colyer回应了这些批评,并且特别提到该平台将来的目标之一就是实现免XML配置的开发体验。Boot所实现的功能超出了这个任务的描述,开发人员不仅不再需要编写XML,而且在一些场景中甚至不需要编写繁琐的import语句。在对外公开的beta版本刚刚发布之时,Boot描述了如何使用该框架在140个字符内实现可运行的web应用,从而获得了极大的关注度,该样例发表在 tweet 上
  当然上面又是我抄过来的,因为我觉得要我去介绍一个框架是什么的时候,我只会说我的理解,但是我的理解不能让大家知道它的背景,所以抄了上面那段,那么下面就是我理解的Spring boot是个什么东西
   无需繁琐配置的Spring集合包Spring boot本身并不是什么新的框架,它可以说只是Spring大家族的一个集合包,当然这个集合包吧基础的配置都给我配置好了,我们无需再进行繁琐的xml配置,甚至是都不用配置web.xml,因为spring boot内部自己集成了一个tomcat,直接通过run的方式就能启动,打包也一样,都可以不用部署tomcat了,当然是针对小项目,大项目肯定是要对中间件进行一些优化的
   Mybatis

  MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。当然我个人更倾向用注解,因为实在是不怎么喜欢配置xml,尤其是eclipse经常因为xml的一些问题卡主,导致编译要等xml验证通过后才能编译,而我用Mybatis最主要的地方就是因为不用像JDBC那样自己一个属性一个属性来赋值
   Druid

  Druid是一个JDBC组件,它包括三部分:
  DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。
  DruidDataSource 高效可管理的数据库连接池。
  SQLParser
  Druid可以做什么?
  1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
  2) 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
  3) 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
  4) SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
  扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。
   其实说简单点Druid就是一个 功能强大,性能优秀的数据库连接池 ,是由阿里巴巴的大牛们开发的,除了性能好之外,我最喜欢的就是它的监控功能了,连github上的说明都是“为监控而生的数据库连接池!”
   Swagger2

   关于 Swagger的介绍和非代码搭建 ,在之前的文章已经说过了,不过这里的Swagger2只是版本号为2而已,很多核心的东西都没怎么变化,当然如果不用和代码封装在一起,也可以参考 Swagger的介绍和非代码搭建 ,不过本文主要讲述在代码中集成,所以不再过多描述
   mybatis-generator

  mybatis-generator是用来根据数据自动生成实体bean和一些常规查询语句的插件,有了这个就不用再一个一个实体bean来写了,而且普通的查询也可以使用自动生成sql语句查询出来
  开始搭建

  一、创建项目

  首先创建一个maven项目,当然最好创建maven-archetype-webapp,原因无他,主要是因为很多时候我还是需要把项目部署到优化过配置的tomcat获取其他容器中,当然也可以创建普通的maven项目
  二、添加依赖

  1. <!-- Springboot -->  
  2.         <dependency>
  3.             <groupId>org.springframework.boot</groupId>
  4.             <artifactId>spring-boot-starter-web</artifactId>
  5.         </dependency>
  6.         <dependency>
  7.             <groupId>org.springframework.boot</groupId>
  8.             <artifactId>spring-boot-starter-jdbc</artifactId>
  9.         </dependency>
  10.         <dependency>
  11.             <groupId>org.springframework.boot</groupId>
  12.             <artifactId>spring-boot-starter-aop</artifactId>
  13.         </dependency>
  14.         <!-- Springboot 热部署 -->
  15.         <dependency>
  16.             <groupId>org.springframework.boot</groupId>
  17.             <artifactId>spring-boot-devtools</artifactId>
  18.             <optional>true</optional>
  19.         </dependency>
  20.         <!-- Swagger API文档 -->
  21.         <dependency>
  22.             <groupId>io.springfox</groupId>
  23.             <artifactId>springfox-swagger-ui</artifactId>
  24.             <version>2.2.2</version>
  25.         </dependency>
  26.         <dependency>
  27.             <groupId>io.springfox</groupId>
  28.             <artifactId>springfox-swagger2</artifactId>
  29.             <version>2.2.2</version>
  30.         </dependency>
  31.         <!-- Mybatis -->
  32.         <dependency>
  33.             <groupId>org.mybatis.spring.boot</groupId>
  34.             <artifactId>mybatis-spring-boot-starter</artifactId>
  35.             <version>1.1.1</version>
  36.         </dependency>
  37.         <!-- druid阿里巴巴数据库连接池 -->
  38.         <dependency>
  39.             <groupId>com.alibaba</groupId>
  40.             <artifactId>druid</artifactId>
  41.             <version>1.0.26</version>
  42.         </dependency>
  43.         <!-- MySql数据库驱动 -->
  44.         <dependency>
  45.             <groupId> mysql</groupId>
  46.             <artifactId> mysql-connector-java</artifactId>
  47.             <version> 5.0.5</version>
  48.         </dependency>
复制代码
其中spring-boot-devtools不是必须,只是如果你想在运行的时候,修改了代码能自动更新,而不用手动重启,就需要加上
  三、添加Applcation类

  这个就是程序的入口类了,代码如下
  1. package wang.raye.springboot;
  2. import org.mybatis.spring.annotation.MapperScan;  
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.boot.web.servlet.ServletComponentScan;  
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;
  7. /**
  8. *
  9. *
  10. * @author Raye
  11. * @since 2016年10月9日22:22:31
  12. */
  13. @MapperScan("wang.raye.springboot.model.mapper")
  14. @SpringBootApplication
  15. @ServletComponentScan
  16. public class Application extends SpringBootServletInitializer {  
  17.     public static void main(String[] args) {
  18.         SpringApplication.run(Application.class);
  19.     }
  20. }
复制代码
想要运行项目时可以直接运行此类就可以,如你所见,其中有main方法,所以可以直接运行
  下面说说3个注解的含义
   @MapperScan("wang.raye.springboot.model.mapper"),扫描wang.raye.springboot.model.mapper下面的mapper接口,其中mapper下面的接口是由mybatis-generator自动生成的,会在后面细说,现在就先知道是个什么东西就行了 @SpringBootApplication 很多Spring Boot开发者总是使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 注解他们的main类。由于这些注解被如此频繁地一块使用(特别是你遵循以上最佳实践时),Spring Boot提供一个方便的 @SpringBootApplication 选择。该 @SpringBootApplication 注解等价于以默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan
   @ServletComponentScan有此注解后,项目中如果需要使用java原生的servlet和filter,可以在类中使用注解实现,主要是配置Druid监控时需要用到
  四、创建配置文件

  虽然spring boot可以不用配置xml,但是也并不是完全不需要配置文件,当然不用配置文件也能跑起来,只是有配置文件我们可以配置很多东西,只是不用像以前xml那么麻烦,首先需要在resource文件夹下面创建application.yml文件
  1. server:  
  2.   port: 80
  3. spring:  
  4.   application:
  5.     name: admin-managee
  6.   datasource:
  7.     url: jdbc:mysql://192.168.157.133:3306/springboot
  8.     username: raye
  9.     password: 123456
  10.     driver-class-name: com.mysql.jdbc.Driver
  11.     type: com.alibaba.druid.pool.DruidDataSource
  12.     druid:
  13.           max-active: 20
  14.           initial-size: 1
  15.           min-idle: 3
  16.           max-wait: 60000
  17.           time-between-eviction-runs-millis: 60000
  18.           min-evictable-idle-time-millis: 300000
  19.           test-while-idle: true
  20.           test-on-borrow: false
  21.           test-on-return: false
  22. debug: true
复制代码
相信这个文件很容易看懂,首先server:下面的port:80这个是定义了运行的端口,之前说过spring boot内置了tomcat服务器,所以如果要使用内置的tomcat并且不想用8080端口,就需要在这里配置
  下面就是datasource的配置,这样不写进代码有个好处,那就是如果是给客户用的程序,可以很方便的修改数据库配置,而不用重新编译,当然如果你是打包jar我估计是要重新编译的,如果是war,那么就可以解压出来直接修改application.yml而不用重新编译了
  而debug:true就是说明当时是调试状态,这样就会输出很多log
  五、创建Druid数据源配置类

  1. package wang.raye.springboot.config;
  2. import java.sql.SQLException;
  3. import javax.sql.DataSource;
  4. import org.springframework.boot.bind.RelaxedPropertyResolver;  
  5. import org.springframework.context.EnvironmentAware;  
  6. import org.springframework.context.annotation.Bean;  
  7. import org.springframework.context.annotation.Configuration;  
  8. import org.springframework.core.env.Environment;  
  9. import org.springframework.transaction.annotation.EnableTransactionManagement;
  10. import com.alibaba.druid.pool.DruidDataSource;  
  11. @Configuration  
  12. @EnableTransactionManagement
  13. /**
  14. * Druid的DataResource配置类
  15. * @author Raye
  16. * @since 2016年10月7日14:14:18
  17. */
  18. public class DruidDataSourceConfig  implements EnvironmentAware {
  19.     private RelaxedPropertyResolver propertyResolver;
  20.     public void setEnvironment(Environment env) {
  21.         this.propertyResolver = new RelaxedPropertyResolver(env, "spring.datasource.");
  22.     }
  23.     @Bean
  24.     public DataSource dataSource() {
  25.         System.out.println("注入druid!!!");
  26.         DruidDataSource datasource = new DruidDataSource();
  27.         datasource.setUrl(propertyResolver.getProperty("url"));
  28.         datasource.setDriverClassName(propertyResolver.getProperty("driver-class-name"));
  29.         datasource.setUsername(propertyResolver.getProperty("username"));
  30.         datasource.setPassword(propertyResolver.getProperty("password"));
  31.         datasource.setInitialSize(Integer.valueOf(propertyResolver.getProperty("initial-size")));
  32.         datasource.setMinIdle(Integer.valueOf(propertyResolver.getProperty("min-idle")));
  33.         datasource.setMaxWait(Long.valueOf(propertyResolver.getProperty("max-wait")));
  34.         datasource.setMaxActive(Integer.valueOf(propertyResolver.getProperty("max-active")));
  35.         datasource.setMinEvictableIdleTimeMillis(Long.valueOf(propertyResolver.getProperty("min-evictable-idle-time-millis")));
  36.         try {
  37.             datasource.setFilters("stat,wall");
  38.         } catch (SQLException e) {
  39.             e.printStackTrace();
  40.         }
  41.         return datasource;
  42.     }
  43. }
复制代码
主要是创建一个druid的DruidDataSource 返回并告诉spring boot这是一个bean
  六、创建Druid的监控servlet和filter

  创建监控Servlet

  1. package wang.raye.springboot.config;
  2. import javax.servlet.annotation.WebInitParam;  
  3. import javax.servlet.annotation.WebServlet;
  4. import com.alibaba.druid.support.http.StatViewServlet;
  5. /**
  6. * Druid的Servlet
  7. * @author Raye
  8. * @since 2016年10月7日14:13:39
  9. */
  10. @SuppressWarnings("serial")
  11. @WebServlet(urlPatterns = "/druid/*",
  12. initParams={  
  13.         @WebInitParam(name="allow",value="127.0.0.1,192.168.1.126"),// IP白名单 (没有配置或者为空,则允许所有访问)
  14.         @WebInitParam(name="deny",value="192.168.1.111"),// IP黑名单 (存在共同时,deny优先于allow)
  15.         @WebInitParam(name="loginUsername",value="Raye"),// 用户名
  16.         @WebInitParam(name="loginPassword",value="123456"),// 密码
  17.         @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能
  18. })
  19. public class DruidStatViewServlet extends StatViewServlet {
  20. }
复制代码
  @WebServlet表明这是一个Servlet,[email protected]
  创建filter
  1. package wang.raye.springboot.config;
  2. import javax.servlet.annotation.WebFilter;  
  3. import javax.servlet.annotation.WebInitParam;
  4. import com.alibaba.druid.support.http.WebStatFilter;
  5. @WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",
  6. initParams={  
  7.     @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源
  8. })
  9. /**
  10. * Druid拦截器,用于查看Druid监控
  11. * @author Raye
  12. * @since 2016年10月7日14:59:27
  13. */
  14. public class DruidStatFilter extends WebStatFilter {
  15. }
复制代码
  同样 @WebFilter 表明此类是一个拦截器
   创建好之后,我们访问 http://localhost/druid/index.html,会自动跳到http://localhost/druid/login.html登录页面,登录进去会出现以下界面

基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建 ...

基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建 ...

  七、配置mybatis

   其实mybatis之前就已经配置好了,就是 Application 类的 @MapperScan("wang.raye.springboot.model.mapper") 注解,这个注解说明了要扫描的mybatis的mapper接口包,当然如果是用xml的话应该还需要其他配置,不过我个人并不喜欢用xml的方式,所以也没有怎么研究
  八、配置mybatis-generator

   配置MyBatis-generator自动生成实体bean,首先需要在pom.xml中添加相关插件依赖,注: 我是用插件的方式来生成实体bean 的,
  1. <build>  
  2.         <finalName>springboot</finalName>
  3.         <plugins>
  4.             <plugin>
  5.                 <groupId>org.mybatis.generator</groupId>
  6.                 <artifactId>mybatis-generator-maven-plugin</artifactId>
  7.                 <version>1.3.5</version>
  8.                 <dependencies>
  9.                     <!--数据库驱动 -->
  10.                     <dependency>
  11.                         <groupId> mysql</groupId>
  12.                         <artifactId> mysql-connector-java</artifactId>
  13.                         <version> 5.0.5</version>
  14.                     </dependency>
  15.                     <dependency>
  16.                         <groupId>org.mybatis</groupId>
  17.                         <artifactId>mybatis-spring</artifactId>
  18.                         <version>1.2.2</version>
  19.                     </dependency>
  20.                     <dependency>
  21.                         <groupId>org.mybatis</groupId>
  22.                         <artifactId>mybatis</artifactId>
  23.                         <version>3.2.4</version>
  24.                     </dependency>
  25.                 </dependencies>
  26.                 <executions>
  27.                     <execution>
  28.                         <id>Generate MyBatis Artifacts</id>
  29.                         <phase>package</phase>
  30.                         <goals>
  31.                             <goal>generate</goal>
  32.                         </goals>
  33.                     </execution>
  34.                 </executions>
  35.                 <configuration>
  36.                     <!--允许移动生成的文件 -->
  37.                     <verbose>true</verbose>
  38.                     <!-- 是否覆盖 -->
  39.                     <overwrite>true</overwrite>
  40.                     <!-- 自动生成的配置 -->
  41.                     <configurationFile>
  42.                         src/main/resources/mybatis-generator.xml</configurationFile>
  43.                 </configuration>
  44.             </plugin>
  45.             <plugin>
  46.                 <artifactId>maven-compiler-plugin</artifactId>
  47.                 <configuration>
  48.                     <encoding>UTF-8</encoding>
  49.                     <source>1.5</source>
  50.                     <target>1.5</target>
  51.                 </configuration>
  52.             </plugin>
  53.         </plugins>
  54.     </build>
复制代码
  其中除了      springboot   是pom.xml默认的节点外,其他都是配置Mybatis-generator的,当然还有顶部的
  1. <properties>  
  2.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  3.     <entity.target.dir>src/main/java/</entity.target.dir>
  4.     <dao.resources.dir>src/main/resources/</dao.resources.dir>
  5. </properties>
复制代码
  这个是用来在 mybatis-generator.xml 中需要使用的
   下面开始配置mybatis-generator.xml首先在resource文件夹下面创建mybatis-generator.xml文件,然后添加如下配置
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE generatorConfiguration  
  3.   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"  
  4.   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  5. <generatorConfiguration>
  6.     <context id="DB2Tables" targetRuntime="MyBatis3" defaultModelType="flat">
  7.         <plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">
  8.             <property name="searchString" value="[e|E]xample$" />
  9.             <property name="replaceString" value="Criteria" />
  10.         </plugin>
  11.     <commentGenerator>
  12.         <property name="suppressDate" value="true" />
  13.     </commentGenerator>
  14.     <jdbcConnection driverClass="com.mysql.jdbc.Driver"
  15.         connectionURL="jdbc:mysql://192.168.157.133:3306/springboot" userId="root"
  16.         password="1993316">
  17.     </jdbcConnection>
  18.     <javaTypeResolver>
  19.         <property name="forceBigDecimals" value="false" />
  20.     </javaTypeResolver>
  21.     <!-- generate Model -->
  22.     <javaModelGenerator targetPackage="wang.raye.springboot.model"
  23.         targetProject="${entity.target.dir}">
  24.         <property name="enableSubPackages" value="true" />
  25.         <property name="trimStrings" value="true" />
  26.     </javaModelGenerator>
  27.     <!-- 自动生成xml(但是好像一直没有生成功,反正也不用xml) -->
  28.     <sqlMapGenerator  targetPackage="wang.raye.springboot.model.mapper"
  29.         targetProject="${dao.resources.dir}">
  30.         <property name="enableSubPackages" value="true" />
  31.     </sqlMapGenerator>
  32.     <!-- 自动生成mapper接口, 可以是 ANNOTATEDMAPPER(注解), XMLMAPPER(xml), MIXEDMAPPER(不知道) -->
  33.     <javaClientGenerator type="ANNOTATEDMAPPER"
  34.         targetPackage="wang.raye.springboot.model.mapper" implementationPackage="wang.raye.springboot.model.mapper.impl"
  35.         targetProject="${entity.target.dir}">
  36.         <property name="enableSubPackages" value="true" />
  37.     </javaClientGenerator>
  38.     <table tableName="user" domainObjectName="User" ></table>
  39.     </context>
  40. </generatorConfiguration>
复制代码
其实需要自己修改数据库配置,因为插件不会读取spring boot中的数据库配置,所以需要在mybatis-generator.xml中配置好数据库,同时也需要修改自己的包名
   table节点中的tableName是指在数据库中的表名,domainObjectName是只生成的实体bean的类名,当然domainObjectName可以不用配置,会默认生成,当然如果有特殊需要可以配置
  配置Swagger2

  1. package wang.raye.springboot;
  2. import org.springframework.context.annotation.Bean;  
  3. import org.springframework.context.annotation.Configuration;
  4. import springfox.documentation.builders.PathSelectors;  
  5. import springfox.documentation.builders.RequestHandlerSelectors;  
  6. import springfox.documentation.service.ApiInfo;  
  7. import springfox.documentation.spi.DocumentationType;  
  8. import springfox.documentation.spring.web.plugins.Docket;  
  9. import springfox.documentation.swagger2.annotations.EnableSwagger2;  
  10. import wang.raye.springboot.model.User;
  11. /**
  12. * SwaggerConfig
  13. */
  14. @Configuration
  15. @EnableSwagger2
  16. public class SwaggerConfig {
  17.     /**
  18.      * 可以定义多个组,比如本类中定义把test和demo区分开了 (访问页面就可以看到效果了)
  19.      *
  20.      */
  21.     @Bean
  22.     public Docket testApi() {
  23.         return new Docket(DocumentationType.SWAGGER_2)
  24.                 .apiInfo(apiInfo())
  25.                 .select()
  26.                 .apis(RequestHandlerSelectors.basePackage("wang.raye.springboot"))
  27.                 .paths(PathSelectors.any()).build();
  28.     }
  29.     private ApiInfo apiInfo() {
  30.         ApiInfo apiInfo = new ApiInfo("SpringBoot学习demo", // 大标题
  31.                 "Spring boot + swagger + mybatis + druid", // 小标题
  32.                 "1.0", // 版本
  33.                 "NO terms of service", "[email protected]
复制代码
", // 作者 "RayeBlog", // 链接显示文字 "http://www.raye.wang/"// 网站链接 ); return apiInfo; } }
  相信看代码很容易看懂,我就不多说了
  编写demo

  至此,环境配置都配置好了,然后我创建一个简单的接口来添加用户,首先看看我的表结构
  1. package wang.raye.springboot;
  2. import org.mybatis.spring.annotation.MapperScan;  
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.boot.web.servlet.ServletComponentScan;  
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;
  7. /**
  8. *
  9. *
  10. * @author Raye
  11. * @since 2016年10月9日22:22:31
  12. */
  13. @MapperScan("wang.raye.springboot.model.mapper")
  14. @SpringBootApplication
  15. @ServletComponentScan
  16. public class Application extends SpringBootServletInitializer {  
  17.     public static void main(String[] args) {
  18.         SpringApplication.run(Application.class);
  19.     }
  20. }0
复制代码
因为只是做演示,所以非常简单,然后看我生成的User.java
  1. package wang.raye.springboot;
  2. import org.mybatis.spring.annotation.MapperScan;  
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.boot.web.servlet.ServletComponentScan;  
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;
  7. /**
  8. *
  9. *
  10. * @author Raye
  11. * @since 2016年10月9日22:22:31
  12. */
  13. @MapperScan("wang.raye.springboot.model.mapper")
  14. @SpringBootApplication
  15. @ServletComponentScan
  16. public class Application extends SpringBootServletInitializer {  
  17.     public static void main(String[] args) {
  18.         SpringApplication.run(Application.class);
  19.     }
  20. }1
复制代码
当然我是删除了很多自动生成的注释,因为看着太烦,不适合在博客上展示,然后看看UserMapper.java
  1. package wang.raye.springboot;
  2. import org.mybatis.spring.annotation.MapperScan;  
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.boot.web.servlet.ServletComponentScan;  
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;
  7. /**
  8. *
  9. *
  10. * @author Raye
  11. * @since 2016年10月9日22:22:31
  12. */
  13. @MapperScan("wang.raye.springboot.model.mapper")
  14. @SpringBootApplication
  15. @ServletComponentScan
  16. public class Application extends SpringBootServletInitializer {  
  17.     public static void main(String[] args) {
  18.         SpringApplication.run(Application.class);
  19.     }
  20. }2
复制代码
同样删除了注释,当然还会自动生成UserCriteria.java 和UserSqlProvider,这2个类主要用于模板查询,用过myBatis应该都知道,就不贴出来了,主要是我们的demo中也不会用到
  一、创建UserServer接口

  1. package wang.raye.springboot;
  2. import org.mybatis.spring.annotation.MapperScan;  
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.boot.web.servlet.ServletComponentScan;  
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;
  7. /**
  8. *
  9. *
  10. * @author Raye
  11. * @since 2016年10月9日22:22:31
  12. */
  13. @MapperScan("wang.raye.springboot.model.mapper")
  14. @SpringBootApplication
  15. @ServletComponentScan
  16. public class Application extends SpringBootServletInitializer {  
  17.     public static void main(String[] args) {
  18.         SpringApplication.run(Application.class);
  19.     }
  20. }3
复制代码
二、创建UserServerImpl

  1. package wang.raye.springboot;
  2. import org.mybatis.spring.annotation.MapperScan;  
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.boot.web.servlet.ServletComponentScan;  
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;
  7. /**
  8. *
  9. *
  10. * @author Raye
  11. * @since 2016年10月9日22:22:31
  12. */
  13. @MapperScan("wang.raye.springboot.model.mapper")
  14. @SpringBootApplication
  15. @ServletComponentScan
  16. public class Application extends SpringBootServletInitializer {  
  17.     public static void main(String[] args) {
  18.         SpringApplication.run(Application.class);
  19.     }
  20. }4
复制代码
三、创建UserController

  1. package wang.raye.springboot;
  2. import org.mybatis.spring.annotation.MapperScan;  
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.boot.web.servlet.ServletComponentScan;  
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;
  7. /**
  8. *
  9. *
  10. * @author Raye
  11. * @since 2016年10月9日22:22:31
  12. */
  13. @MapperScan("wang.raye.springboot.model.mapper")
  14. @SpringBootApplication
  15. @ServletComponentScan
  16. public class Application extends SpringBootServletInitializer {  
  17.     public static void main(String[] args) {
  18.         SpringApplication.run(Application.class);
  19.     }
  20. }5
复制代码
  到此一个接口就完成了,我们可以到swagger2的文件页面去测试 http://localhost/swagger-ui.htm 注意如果端口不是80需要加上端口号,点开页面中的用户相关的接口 和GET /user/add可以看到如下页面

基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建 ...

基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建 ...
我们可以在parameters处输入
  1. package wang.raye.springboot;
  2. import org.mybatis.spring.annotation.MapperScan;  
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.boot.web.servlet.ServletComponentScan;  
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;
  7. /**
  8. *
  9. *
  10. * @author Raye
  11. * @since 2016年10月9日22:22:31
  12. */
  13. @MapperScan("wang.raye.springboot.model.mapper")
  14. @SpringBootApplication
  15. @ServletComponentScan
  16. public class Application extends SpringBootServletInitializer {  
  17.     public static void main(String[] args) {
  18.         SpringApplication.run(Application.class);
  19.     }
  20. }6
复制代码
点击try it out就可以测试了,当然你也可能不想用json的方式,可以使用
  1. package wang.raye.springboot;
  2. import org.mybatis.spring.annotation.MapperScan;  
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.boot.web.servlet.ServletComponentScan;  
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;
  7. /**
  8. *
  9. *
  10. * @author Raye
  11. * @since 2016年10月9日22:22:31
  12. */
  13. @MapperScan("wang.raye.springboot.model.mapper")
  14. @SpringBootApplication
  15. @ServletComponentScan
  16. public class Application extends SpringBootServletInitializer {  
  17.     public static void main(String[] args) {
  18.         SpringApplication.run(Application.class);
  19.     }
  20. }7
复制代码
代替
  1. package wang.raye.springboot;
  2. import org.mybatis.spring.annotation.MapperScan;  
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.boot.web.servlet.ServletComponentScan;  
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;
  7. /**
  8. *
  9. *
  10. * @author Raye
  11. * @since 2016年10月9日22:22:31
  12. */
  13. @MapperScan("wang.raye.springboot.model.mapper")
  14. @SpringBootApplication
  15. @ServletComponentScan
  16. public class Application extends SpringBootServletInitializer {  
  17.     public static void main(String[] args) {
  18.         SpringApplication.run(Application.class);
  19.     }
  20. }8
复制代码
同时为了隐藏user参数,需要在SwaggerConfig类的testApi方法中添加.ignoredParameterTypes(User.class)
  1. package wang.raye.springboot;
  2. import org.mybatis.spring.annotation.MapperScan;  
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.boot.web.servlet.ServletComponentScan;  
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;
  7. /**
  8. *
  9. *
  10. * @author Raye
  11. * @since 2016年10月9日22:22:31
  12. */
  13. @MapperScan("wang.raye.springboot.model.mapper")
  14. @SpringBootApplication
  15. @ServletComponentScan
  16. public class Application extends SpringBootServletInitializer {  
  17.     public static void main(String[] args) {
  18.         SpringApplication.run(Application.class);
  19.     }
  20. }9
复制代码
  测试界面就会变为

基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建 ...

基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建 ...

  结尾

  好了,到这里一个Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境就搭建完成了,欢迎大家留言交流,另外附上本项目
   demo oschina地址
   demo github地址
sucre 发表于 2016-10-11 23:44:38
走自己的路,让别人打车去吧。  
回复 支持 反对

使用道具 举报

下一次~微笑 发表于 2016-10-12 19:16:37
没钱认命
回复 支持 反对

使用道具 举报

移动互联微视角 发表于 2016-10-17 03:34:16
只有假货是真的,别的都是假的!  
回复 支持 反对

使用道具 举报

buyessayrowl 发表于 2016-10-22 22:35:36
搬个小板凳 ,楼猪,go。
回复 支持 反对

使用道具 举报

冯银 发表于 2016-10-23 16:30:53
冯银留下了印记
回复 支持 反对

使用道具 举报

刘小川 发表于 2016-10-23 18:06:49
太高深了,理解力不够用了!
回复 支持 反对

使用道具 举报

wazyyan1 发表于 2016-10-25 21:44:53
没人回帖。。。我来个吧
回复 支持 反对

使用道具 举报

yyee 发表于 2016-10-27 01:25:34
你嘴角三十度的微笑,百度搜索不到。
回复 支持 反对

使用道具 举报

wangmeng 发表于 2016-10-27 05:34:51
大家好!我是wangmeng
回复 支持 反对

使用道具 举报

我要投稿

推荐阅读


回页顶回复上一篇下一篇回列表
手机版/c.CoLaBug.com ( 粤ICP备05003221号 | 粤公网安备 44010402000842号 )

© 2001-2017 Comsenz Inc.

返回顶部 返回列表