1,Mybatis
MyBatis是一款优秀的 持久层 框架,用于简化JDBC的开发。
两个关键词:一个是持久层,另一个是框架。
A. 持久层:指的是就是数据访问层(dao),是用来操作数据库的。
B. 框架:是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。在框架的基础上进行软件开发更加高效、规范、通用、可拓展。
1.2,快速创建Mybatis项目
1.创建springboot工程,并导入 mybatis的起步依赖、mysql的驱动包。
2.数据准备 (创建表和相对于的实践类)
3.编写application.properties,配置数据库连接信息。
#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=1234
4.创建持久层接口
@Mapper
public interface UserMapper {
@Select("select * from user")
public List<User> list();
}
5.单元测试
在创建出来的SpringBoot工程中,在src下的test目录下,已经自动帮我们创建好了测试类 ,并且在测试类上已经添加了注解 @SpringBootTest,代表该测试类已经与SpringBoot整合。
该测试类在运行时,会自动通过引导类加载Spring的环境(IOC容器)。我们要测试那个bean对象,就可以直接通过@Autowired注解直接将其注入进行,然后就可以测试了。
@SpringBootTest
public class MybatisQuickstartApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void testList(){
List<User> userList = userMapper.list();
for (User user : userList) {
System.out.println(user);
}
}
}
6.解决SQL警告与提示
默认我们在UserMapper接口上加的@Select注解中编写SQL语句是没有提示的。 如果想让idea给我们提示对应的SQL语句,我们需要在IDEA中配置与MySQL数据库的链接。
2,JDBC
2.1,JDBC是什么
JDBC: ( Java DataBase Connectivity ),就是使用Java语言操作关系型数据库的一套API
本质:
A. sun公司官方定义的一套操作所有关系型数据库的规范,即接口。
B. 各个数据库厂商去实现这套接口,提供数据库驱动jar包。
C. 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
2.2,JDBC程序是如何操作数据库
-
注册驱动
-
获取连接对象
-
执行SQL语句,返回结果
-
封装结果数据
-
释放资源
2.3,JDBC存在问题
A. 数据库链接的四要素(驱动、链接、用户名、密码)全部硬编码在java代码中。
B. 查询结果的解析及封装非常繁琐。
C. 每一次查询数据库都需要获取连接,操作完毕后释放连接, 资源浪费, 性能降低。
3,数据库连接池
3.1,数据库连接池介绍
-
数据库连接池是个容器,负责分配、管理数据库连接(Connection)
-
它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;
-
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
-
好处
-
-
资源重用
-
提升系统响应速度
-
避免数据库连接遗漏
-
-
常见的数据库连接池
-
C3P0
DBCP
Druid
Hikari (springboot默认)
4,lombok
4.1Lombok 简介
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类,以便我们可以轻松地构建对象实例 4.2lombok使用
1). pom.xml 文件中引入依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> 2). 在定义的实体类上添加注解 import lombok.Data; @Data public class User { private Integer id; private String name; private Short age; private Short gender; private String phone; }
4.3 @Builder使用
**@Builder使用** package com.itheima.mybatis.pojo; import Tombok.Builder: import ombok.Data @Data @Builder public class User { private Integer id; private String name; privateInteger age ; private Byte gender : private String phone: class Demo { public static void main(string[] args) { User ss = new User(); User user = User .builder () .name("张三") .phone("18987654321") .buitd() ; System.out.println("user = " + user);
-