JDBC
简化JDBC的开发
JDBC仅仅是一套接口 是一套规范
Mybatis是持久层框架
用于简化JDBC的开发
使用Java语言操作关系型数据库的一套API
原始的JDBC程序
package com.bigdate.mybatis;
import com.bigdate.mybatis.mapper.UserMapper;
import com.bigdate.mybatis.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
@SpringBootTest //springboot整合单元测试的注解
class MybatisApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void testListUser(){
List<User> userList = userMapper.list();
userList.stream().forEach(user -> {
System.out.println(user);
});
}
@Test
public void testJdbc() throws Exception {
//1. 注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2. 获取连接对象
String url = "jdbc:mysql://localhost:3306/mybatis";
String username = "root";
String password = "123456";
Connection connection = DriverManager.getConnection(url, username, password);
//3. 获取执行SQL的对象Statement,执行SQL,返回结果
String sql = "select * from user";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
//4. 封装结果数据
List<User> userList = new ArrayList<>();
while (resultSet.next()){
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
short age = resultSet.getShort("age");
short gender = resultSet.getShort("gender");
String phone = resultSet.getString("phone");
User user = new User(id,name,age,gender,phone);
userList.add(user);
}
//5. 释放资源
statement.close();
connection.close();
}
}
注册驱动指定驱动类的类名
还有指定url
还要获取连接 断开连接
缺点太多
Springboot和Mybatis整合
底层存在数据库连接池
比较
小结
JDBC是一套规范
各个数据库厂商提供对应的实现
叫做数据库的驱动
但是由于原始的JDBC的API开发繁琐 效率底下
所以现在出现了Mybatis这种持久层框架
用来对JDBC进行封装 简化操作 提高效率
日后的企业级开发中也会基于Mybatis这样的持久层框架进行
数据库连接池技术
当各个客户端获取数据库的时候会在数据库连接池中获取数据库的连接
使用完毕后会再还给数据库
追光者连接池
德鲁伊连接池
切换德鲁伊连接池
在pom文件里添加依赖
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
<!-- druid连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
在数据库配置文件里指定
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
这样就连接成功
小结
lombok
之前的实体类
lombok简化实体类的书写
只要加上一个注解就行
引入lombok的依赖
不用指定版本号 因为springboot工程会统一版本号
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
修改实体类
package com.bigdate.mybatis.pojo;
import lombok.*;
//@Getter
//@Setter
//@ToString
//@EqualsAndHashCode
@Data
@NoArgsConstructor //无参构造
@AllArgsConstructor //带参构造
public class User {
private Integer id;
private String name;
private Short age;
private Short gender;
private String phone;
}
用户信息正常封装
用户信息正常输出
我们的idea自带此插件