使用**IDEA创建maven项目**,勾选从模板原型构建,这里选择maven-archetype-quickstart类型,这种类型的maven项目以jar包的方式提供对外统一的输出,这是最快速的一个构建Spring Boot研发项目的模板。在没有Spring Boot的开发框架时,更多的选择maven-archetype-webapp,这种方式创建的是以war包方式部署在Tomcat或JBoss这种J2EE的容器。详见[Maven官方文档](http://maven.apache.org/guides/introduction/introduction-to-archetypes.html)
创建成功后,需要给**目录**指定其为什么目录,选定项目文件夹,右键选择Mark Directory as,然后选择目录类型。还要在main目录下创建resources目录并指定类型。main目录下的java目录下放置java源代码,resources目录下放置spring、spring boot等的资源配置文件。
从零**集成项目**:进入[Spring官方文档](https://spring.io/guides/gs/rest-service/),查看Build with Maven目录下pom.xml文件,从其中复制spring-boot-starter-parent依赖到项目中的pom.xml文件中,这样当前的项目就是Spring Boot项目。并在项目pom文件<dependencies>标签内引入spring-boot-starter-parent下的spring-boot-starter-web和spring-boot-starter-test项目。
在APP class上加@EnableAutoConfiguration注解
将APP的**启动类**当成可以支持自动化配置的bean,并且能够开启整个工程类基于springboot的自动化的配置,然后用下面这行代码启动Spring Boot。
```
SpringApplication.run(App.class,args);
```
要实现Spring MVC的***controller***功能,则引入注解@RestController或@Controller
Spring Boot 对应的**配置化操作**,只需要在resources目录下创建默认配置文件——application.yml或application.properties,在其中进行配置。
**集成Mybatis**:进入pom文件,确定使用的数据库,使用mysql,则引入mysql-connector-java包;确定使用什么连接池来管理mysql的链接,这里使用阿里巴巴的druid连接池。然后将spring boot对mybatis的支持引入,这里使用mybatis-spring-boot-starter包;在配置文件类导入mybatis需要的一些配置,用来启动一个带mybatis数据库访问的一个spring boot工程,例:
```yml
mybatis:
mapper-locations: classpath:mapping/*.xml
spring:
datasource:
name: miaohsa
url: jdbc:mysql://localhost:3306/miaosha?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
username: root
password: 123456
#使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
```
然后使用**mybatis的自动生成工具**,用来生成对应数据库文件的映射。
在pom中引入mybatis自动生成的插件,例:
```xml
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>mybatis generator</id>
<phase>package</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<!--允许移动生成的文件-->
<verbose>true</verbose>
<!--不允许自动覆盖文件-->
<overwrite>false</overwrite>
<configurationFile>
src/main/resources/mybatis-generator.xml
</configurationFile>
</configuration>
</plugin>
```
其中mybatis-generator.xml文件在[官网](http://www.mybatis.org/generator/configreference/xmlconfig.html)中有,可粘贴过来,删改使用,例:
```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">
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!--数据库链接地址账号密码-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/miaosha?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
userId="root"
password="123456">
</jdbcConnection>
<!--生成dataobject类的存放位置-->
<javaModelGenerator targetPackage="com.miaosha.dataobject" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--生成映射文件存放位置-->
<sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!--生成Dao类的存放位置-->
<!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件的代码
type="ANNOTATIONDMAPPER",生成Java Model和基于注解的Mapper 对象
type="MIXEDMAPPER",生成基于注解的Java Model和相应的Mapper对象
type="XMLMAPPER",生成SQLMap XML 文件和独立的Mapper接口
-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.miaosha.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!--生成对应表和类名-->
<table tableName="user_info" domainObjectName="UserDO" enableCountByExample="false"
enableUpdateByExample="false" enableSelectByExample="false"
enableDeleteByExample="false" selectByExampleQueryId="false"></table>
<table tableName="user_password" domainObjectName="UserPasswordDO" enableCountByExample="false"
enableUpdateByExample="false" enableSelectByExample="false"
enableDeleteByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
```
在Run/Debug Configuration下新建一个Maven的配置,例:
![mybatis generator](https://github.com/xiruitao/image/blob/images/springboot-mybatis,jpa/mybatis%20generator.jpg?raw=true)
将@EnableAutoConfiguration注解改为@SpringBootApplication,其等价于以默认属性使用@Configuration , @EnableAutoConfiguration 和@ComponentScan 。最终启动类注解例:
```java
@SpringBootApplication(scanBasePackages = {"com.miaosha"})
@RestController
@MapperScan("com.miaosha.dao")
```
使用**SpringMVC方式进行开发**,项目结构
![项目结构](https://github.com/xiruitao/image/blob/images/springboot-mybatis,jpa/%E7%A7%92%E6%9D%80%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84.png?raw=true)
其中***dao层***与***dataobject层***由mybatis自动生成工具生成,dataobject层(负责数据存储到service层的传输)下的类对应数据库对象模型,其中的字段与数据库一一映射,dao层下的类定义对数据库进行交互的方法,在resources的mapping目录下有自动生成dao层对应的配置文件,一起实现对数据库的操作。
在***service层***下model目录下创建对象模型(不可以把数据库的映射简单透传返回给想要service的服务,这个model对应Spring MVC中业务逻辑交互的模型),然后在数据库中创建对应的表,在service层下创建对应对象的service接口,接口中定义需要的方法(方法的返回类型大部分为model对象),在service层下impl目录下去实现。添加方法:在mapping目录下对应配置文件中添加相应的SQL语句,在dao目录下的对应接口中建立映射(添加方法)。
**注:**若数据库�