目录
快速认识Spring Boot
Spring Boot 前言
SpringBoot 是 Java 社区最有影响力之一的开源的Spring后端开发框架,也是企业级应用开发的首选技术,Spring Boot 拥有良好的技术基因,它是伴随着Spring 4 而产生的技术框架,在继承了 Spirng 框架所有优点的同时也为开发者带来了巨大的便利,与普通的 Spring 项目相比,SpringBoot 可以让项目的配置更简化、编码更简化、部署更方便,为开发者提供了开箱即用的良好体验,进一步提升了开发者的开发效率。
Spring Boot 优点
- 可以快速创建Spring项目及其与主流框架集成;
- 使用嵌入式容器Servlet容器,应用无须打包成War包;
- starters自动依赖与版本控制;
- 诸多自动配置,简化开发;极大程度自动化配置Spring和第三方库;
- 生产就绪功能;
- 无需配置XML,开箱即用;
- Spring Boot与Spring一脉相承,支持各种REST API实现。
Spring Boot环境配置
需要准备的环境
- Spring boot 2.x需要JDK 1.8.0_201(以上版本), Spring boot3.x需要JDK17
- Apache Maven 3.6.0(以上版本)
- IntelliJ IDEA Ultimate旗舰版
JDK环境准备
Java Development Kit,Oracle公司提供的Java开发工具包,包含了JRE(Java Runtime Environment)。建议使用JDK1.8版本。
Spring boot项目创建
项目创建有两种方式:
第一种:Maven方式创建
第二种:Spring Initializr方式创建
Spring Boot 原理分析
spring-boot-starter-parent依赖
<!-- Spring Boot父项目依赖管理 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/>
</parent>
spring-boot-starter-parent是通过标签对一些常用技术框架的依赖文件进行了统一版本号管理。
spring-boot-starter-web依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-web依赖启动器的主要作用是提供Web开发场景所需的底层所有依赖文件,它对Web开发场景所需的依赖文件进行了统一管理。
认识ORM的概念
ORM(Object Relational Mapping,简称ORM)读作对象关系映射,是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。简单来说就是将数据库表与java实体对象做一个映射。
ORM的优缺点
- 优点:符合面向对象编程;技术与业务解耦,开发时不需要关注数据库的连接与释放;
- 缺点:orm会牺牲程序的执行效率。
-
认识MyBatis
1.MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身。
2.Mybatis通过xml配置文件或注解的方式将要执行的各种statement或preparedStatemnt配置起来。
3.由Mybatis框架执行sql并将结果映射成java对象返回。
4.通过java对象和statement中的sql进行映射生成最终执行的sql语句。
Mybatis的优点
(1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解 除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。
(2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接。
(3)很好的与各种数据库兼容。
(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。
(4)能够与Spring很好的集成。
(5)提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。
Mybatis的缺点
(1)SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。
(2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
Mybatis框架的适用场合
(1)MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。
(2)对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。
整合MyBatis框架
1.在maven中导入mybatis相关依赖
<!-- 引入依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!--数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.11</version>
</dependency>
<!-- JDBC(Java数据库连接)驱动程序-->
<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><dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
-
2.配置yum
-
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123
url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8
mybatis-plus.global-config.db-config.table-prefix: tb_
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-
3.创建用户类
-
@Data
public class User {
private int id;
private String name;
private int age;
private String email;
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", email='" + email + '\'' +
'}';
}
}
4. 创建User Mapper接口
public interface UserMapper {
public User getUserById(Integer id);
}
5.创建XML影射文件,并添加SQL语句
放在resources文件下,名称为UserMapper.xml
<?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.my.ccit.mapper.UserMapper">
<select id="getUserById" resultType="User" parameterType="int">
select * from tb_user where id=#{id}
</select>
</mapper>
6.service服务
创建service接口
public interface UserService {
public User getUserById(Integer id);
}
实现Service接口
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User getUserById(Integer id) {
return userMapper.getUserById(id);
}
}
7.创建UserController控制类
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/getUserById/{id}")
public User getUserById(@PathVariable Integer id) {
System.out.println("id=" + id);
return userService.getUserById(id);
}
}
8.测试程序
@Resource
OrmUserMapper ormUserMapper;
@Test
void contextLoads() throws Exception {
System.out.println("ormUser1 = " + ormUserMapper.findAll());
System.out.println("ormUser2 = " + ormUserMapper.findById(1));
}
@Test
void add() throws Exception {
OrmUser ormUser = new OrmUser();
ormUser.setAge(30);
ormUser.setUsername("linda");
ormUserMapper.insert(ormUser);
}
学习小结
1.根据Spring boot的优点,我们可以使用它快速搭建程序框架,进行业务开发。
2.每当学会 Spring Boot 中的一个知识点,不妨想想这个功能在 Spring 框架中要如何使用,如何配置,两边都搞懂了,互相印证,加深对一个知识点的理解。
3.多多关注 Spring Boot 的发展动态。不同于传统的框架可能一年更新一两次,Spring Boot 更新非常频繁,二次每次更新都会带来一些好玩的东西,可能会有新的 API 加入进来,也可能会有旧的 API 失效,变化大,因此多多关注,避免掉坑。
4.多看源码。不同于其他全新的框架源码你可能会看懵了,由于 Spring Boot 是基于 Spring 的,所以只要你 Spring 基础扎实,看 Spring Boot 源码可以说是毫无压力。
关于Spring Boot ,曾经因为项目需求,“临阵磨枪”式的学习了 一下,多在网络上找了一些在线教程,结合看了一些快速入门的博客,把项目给搭建了起来。