开发环境: jdk1.8,maven3.6,MySQL5.6
开发工具: idea
前置条件:会搭建SSM框架
1、搭建项目:
步骤如下,不详细讲了,以截图的形式展示:
这之后直接next,fininsh就创建好了。
其次,在pom.xml里面配置依赖。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>spitngboottest</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>spitngboottest</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--@Slf4j自动化日志对象-log-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version>
</dependency>
<!-- Druid连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<!-- web开发相关类 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mybatis相关类 -->
<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-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- mysql连接 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2、SpringBoot的配置
在项目创建之后,可以发现基本的结构与ssm框架没啥区别,那区别到底在哪儿呢。
2.1 appellation配置文件
记得ssm框架整合时有各种application-xxx.xml,繁琐的配置让初学者头大好久。SpringBoot提倡“习惯优于配置”的理念,再也不会为了配置文件繁琐而头疼。此外,在项目中你可以发现没有了web.xml这个配置文件。那初始化的配置文件都在哪里配置呢?答案就在下面:
在我们创建完项目后,在/src/main/resources目录下有一个叫application.propertites的配置文件。然后我们不采用这种文件,而是采用application.yml这种格式的配置文件。两者的区别,不详细讲了,自行百度。(注意:SpringBoot项目默认会扫描/src/main/resources目录下名字叫application的配置文件,如果同时存在application.yml,application.properties,那么默认扫描application.properites)。SpringBoot项目的配置文件就是在这个东西下配置的。那么我现在配置一些基础的吧:
server:
#端口号
port: 8080
spring:
#数据源配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: user
password: 123
url: jdbc:mysql://localhost:3306/db_springboot?serverTimezone=UTC&characterEncoding=utf-8&useUnicode=true
mybatis:
#映射配置文件路径
mapper-locations: classpath:mybatis/mapper/*.xml
#核心配置文件路径
config-location: classpath:mybatis/mybatis-config.xml
上面的默认配置基本是这样的一个格式,也就是yml格式。(也可以是yaml,自行百度yaml格式,口语读作丫妹儿,滑稽= =)。
2.2 Mybatis配置文件
我主要着重将SpringBoot,Mybatis就快速的过了。配置文件目录为/src/main/resources/mybatis/mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 开启驼峰映射 ,为自定义的SQL语句服务-->
<!--设置启用数据库字段下划线映射到java对象的驼峰式命名属性,默认为false-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 打印sql语句-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
</configuration>
3、项目的目录结构(以具体user例子讲述)
3.1 总体结构
3.2 UserController
package com.example.spitngboottest.controller;
import com.example.spitngboottest.model.UserDo;
import com.example.spitngboottest.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Package com.example.spitngboottest.controller
* @date: 2019-02-22
*/
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/user/selectAll")
public List<UserDo> selectAll() {
return userService.selectAll();
}
}
3.3 UserService & UserServiceImpl
package com.example.spitngboottest.service;
import com.example.spitngboottest.model.UserDo;
import java.util.List;
/**
* @Package com.example.spitngboottest.service
* @date: 2019-02-22
*/
public interface UserService {
/**
* 查询所有用户
* @param
* @return List<UserDo>
* @throws
* @date 2019-02-22
*/
List<UserDo> selectAll();
}
package com.example.spitngboottest.service;
import com.example.spitngboottest.mapper.UserMapper;
import com.example.spitngboottest.model.UserDo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Package com.example.spitngboottest.service
* @date: 2019-02-22
*/
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
@Override
public List<UserDo> selectAll() {
return userMapper.selectAll();
}
}
3.4 UserMapper & UserMapper.xml
package com.example.spitngboottest.mapper;
import com.example.spitngboottest.model.UserDo;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Package com.example.spitngboottest.mapper
* @date: 2019-02-22
*/
@Component
public interface UserMapper {
/**
* 查询所有用户
* @param
* @return List<UserDo>
* @throws
* @date 2019-02-22
*/
List<UserDo> selectAll();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.spitngboottest.mapper.UserMapper">
<select id="selectAll" resultType="com.example.spitngboottest.model.UserDo">
select id,name,age from user
</select>
</mapper>
4、SpringBoot启动类(重点)
Springboot项目与spring项目不同之处,它有自己的启动类,不打包放在tomcat容器中也可以运行。可能会好奇,spring可以通过application-xxx.xml进行项目扫包,SpringBoot怎么扫包。
首先先将SpringBoot启动类有一个@SpringBootApplication注解。有了这个注解,SpringBoot项目就会默认去扫描当前包及其子包下的所有文件。注意,这里有个坑,mapper包扫不到。所以为了扫描mapper包,需要用到@MapperScan,并且在mapper接口上写上@Component。这是解决办法之一,还有别的方法,自行百度。
5、运行截图
运行启动类,输入url,截图如下:
6、SpringBoot常用的注解
@SpringBootApplication:一般用于启动类,包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。
@ComponentScan:组件扫描,可自动发现和装配一些Bean。可以扫描带有@Component 注解的类以及它的的子注解@Service、@Repository、@Controller的类。
@EnableAutoConfiguration:开启自动配置。
@Configuration:等同于spring的XML文件,进行配置。
@ImportResource:用来加载第三方xml配置文件。
@Value:注入properties配置的属性的值。