1、入门
是什么:MyBatis是一款优秀的 持久层 框架,用于简化JDBC的开发 持久层:指的是就是数据访问层(dao),是用来操作数据库的。 框架:是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。在框架的基础上进行软件开发更加高效、规范、通用、可拓展。
查询所有用户数据:
-
创建springboot工程,导入mybatis起步依赖、mysql驱动包
-
创建用户表user,创建对应的实体类 User
-
编写application.properties,配置数据库连接信息
-
编写持久层接口UserMapper,及SQL
-
单元测试
1.1 创建springboot工程
创建springboot工程,并导入 mybatis的起步依赖、mysql的驱动包。
1.2 数据准备
创建用户表user,创建对应的实体类 User。
1.3 配置
编写application.properties,配置数据库连接信息。
1.4 持久层接口
在创建出来的springboot工程中,在引导类所在包下,在创建一个包 mapper。在mapper包下创建一个接口 UserMapper 。
1.5 单元测试
在创建出来的SpringBoot工程中,在src下的test目录下,已经自动创建好了测试类 ,并且在测试类上已经添加了注解 @SpringBootTest,代表该测试类已经与SpringBoot整合。 该测试类在运行时,会自动通过引导类加载Spring的环境(IOC容器)。要测试哪个bean对象,就可以直接通过@Autowired注解直接将其注入进行,然后就可以测试了。
2、JDBC介绍(了解)
2.1 介绍
java语言操作数据库只能通过一种方式,就是sun公司提供的JDBC规范。Mybatis框架是对原始的JDBC程序的封装 本质:
1. sun公司官方定义的一套操作所有关系型数据库的规范,即接口 2. 各个数据库厂商去实现这套接口,提供数据库驱动jar包 3. 用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类
2.2 代码
步骤:
1. 注册驱动 2. 获取连接对象 3. 执行SQL语句,返回结果 4. 封装结果数据 5. 释放资源
2.3 问题分析
-
数据库链接的四要素(驱动、链接、用户名、密码)全部硬编码在java代码中。
-
查询结果的解析及封装非常繁琐
-
每一次查询数据库都需要获取连接,操作完毕后释放连接, 资源浪费, 性能降低。
2.4 技术对比(mybatis解决问题)
-
数据库连接四要素(驱动、链接、用户名、密码),配置在了springboot默认的配置文件 application.properties中。
-
查询结果的解析及封装,由mybatis自动完成映射封装,我们无需关注。
-
在mybatis中使用了数据库连接池技术,从而避免了频繁的创建连接、销毁连接而带来的资源浪费。
对于Mybatis来说,在开发持久层程序,操作数据库时,需要重点关注的就是 application.properties 的配置 、 Mapper接口定义 以及 SQL语句的定义。
3、数据库连接池
3.1 介绍
数据库连接池是个容器,负责分配、管理数据库连接(Connection) 它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏 连接池是在一开始就创建好了一些连接(Connection)对象存储起来。用户需要连接数据库时,不需要自己创建连接,而只需要从连接池中获取一个连接进行使用,使用完毕后再将连接对象归还给连接池;这样就可以起到资源重用,也节省了频繁创建连接销毁连接所花费的时间,从而提升了系统响应的速度。 优点: 资源重用 提升系统响应速度 避免数据库连接遗漏
3.2 产品
常见的数据库连接池(Hikari和Druid性能好一些): C3P0 DBCP Druid(阿里巴巴开源的数据库连接池项目 ) Hikari(springboot默认) 如果想把默认数据库连接池切换为Druid
1. 在pom.xml文件中引入依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency>
2. 在application.properties中引入数据库连接配置 (可选,也可以使用 spring.datasource.xxxxx -> 也就是不去改动)
4、lombok
4.1 介绍
是什么:Lombok是一个实用的java工具包,可以通过简单的注解来简化和消除一些必须有但显得很臃肿的Java代码
注解 | 作用 |
---|---|
@Getter/@Setter | 为所有的属性提供get/set方法 |
@ToString | 会给类自动生成易阅读的 toString 方法 |
@EqualsAndHashCode | 根据类所拥有的非静态字段自动重写 equals 方法和 hashCode 方法 |
@Data | 提供了更综合的生成代码功能(@Getter + @Setter + @ToString + @EqualsAndHashCode) |
@NoArgsConstructor | 为实体类生成无参的构造器方法 |
@AllArgsConstructor | 为实体类生成除了static修饰的字段之外带有各参数的构造器方法。 |
@Slf4j | private static final Logger log = LoggerFactory.getLogger(LogExample.class);(生成日志记录) |
@Builder | 自动生成一个Builder类,以便我们可以轻松地构建对象实例(例如全参有3个而此时需要两个的时候) |
注意:Lombok会在编译时,自动生成对应的java代码。我们使用lombok时,还需要安装一个lombok的插件(idea自带)。
4.2 使用步骤:
-
在pom.xml文件中引入依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
-
在定义的实体类上添加注解