java使用连接池的好处-java线程池执行完毕
lombok注解生成
lombok 是一个实用类库 能够通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法java使用连接池的好处,并可以自动化生成日志变量,简化java开发、提高效率。
相应注解及作用
注解 作用
@Getter/@Setter 为所有的属性提供get/set方法
@ToString 会给类自动生成易阅读的 toString 方法
@EqualsAndHashCode
根据类所拥有的非静态字段自动重写 equals 方法和 hashCode
方法
@Data
提供了更综合的生成代码功能(@Getter + @Setter +
@ToString + @EqualsAndHashCode)
@NoArgsConstructor 为实体类生成无参的构造器方法
@AllArgsConstructor
为实体类生成除了static修饰的字段之外带有各参数的构造器方
法。
mybatis操作数据库四步:
1.加载依赖
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.3.0
com.mysql
mysql-connector-j
runtime
2. 数据准备 加载实用类
public class User {
private Integer id; //id(主键)
private String name; //姓名
private Short age; //年龄
private Short gender; //性别
private String phone; //手机号
//省略GET, SET方法
}public class User {
private Integer id; //id(主键)
private String name; //姓名
private Short age; //年龄
private Short gender; //性别
private String phone; //手机号
//省略GET, SET方法
}
850c05e7306e13521387a976df2fe1e9
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 编写接口文件
import com.itheima.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
//查询所有用户数据
@Select("select id, name, age, gender, phone from user")
public List list();
}
jdbc连接数据库:
DriverManager(类):数据库驱动管理类。
作用:
1. 注册驱动
2. 创建java代码和数据库之间的连接java使用连接池的好处,即获取Connection对象
Connection(接口):建立数据库连接的对象
12c8bc54c631bc7f92c94d6df0840ee1
作用:用于建立java程序和数据库之间的连接
Statement(接口): 数据库操作对象(执行SQL语句的对象)。
作用:用于向数据库发送sql语句
ResultSet(接口):结果集对象(一张虚拟表)
作用:sql查询语句的执行结果会封装在ResultSet中
jdbc 连接数据库代码:
import com.itheima.pojo.User;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class JdbcTest {
@Test
public void testJdbc() throws Exception {
//1. 注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2. 获取数据库连接
String url="jdbc:mysql://127.0.0.1:3306/airport";
String username = "root";
String password = "600600";
Connection connection = DriverManager.getConnection(url,
username, password);
//3. 执行SQL
Statement statement = connection.createStatement(); //操作SQL
的对象
String sql="select id,name,age,gender,phone from user";
ResultSet rs = statement.executeQuery(sql);//SQL查询结果会封装
在ResultSet对象中
List userList = new ArrayList<>();//集合对象(用于存储
User对象)
//4. 处理SQL执行结果
while (rs.next()){
//取出一行记录中id、name、age、gender、phone下的数据
int id = rs.getInt("id");
String name = rs.getString("name");
short age = rs.getShort("age");
short gender = rs.getShort("gender");
String phone = rs.getString("phone");
//把一行记录中的数据,封装到User对象中
User user = new User(id,name,age,gender,phone);
userList.add(user);//User对象添加到集合
}
//5. 释放资源
statement.close();
connection.close();
rs.close();
//遍历集合
for (User user : userList) {
System.out.println(user);
}
}
数据库连接池技术
数据库连接池是个容器,负责分配、管理数据库连接(Connection)
程序在启动时,会在数据库连接池(容器)中,创建一定数量的Connection对象
允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
客户端在执行SQL时,先从连接池中获取一个Connection对象,然后在执行SQL语句,SQL语句
执行完之后,释放Connection时就会把Connection对象归还给连接池(Connection对象可以
复用)
释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏
客户端获取到Connection对象了,但是Connection对象并没有去访问数据库(处于空闲),数据
库连接池发现Connection对象的空闲时间 > 连接池中预设的最大空闲时间,此时数据库连接池
就会自动释放掉这个连接对象
数据库连接池的好处:
1. 资源重用
2. 提升系统响应速度
3. 避免数据库连接遗漏
常用数据库连接池 :Druid Hikari (springboot默认)
mybatis 与 JDBC的比较
分析了JDBC的缺点之后,我们再来看一下在mybatis中,是如何解决这些问题的:
1. 数据库连接四要素(驱动、链接、用户名、密码),都配置在springboot默认的配置文件
application.properties中
2. 查询结果的解析及封装,由mybatis自动完成映射封装,我们无需关注
3. 在mybatis中使用了数据库连接池技术,从而避免了频繁的创建连接、销毁连接而带来的资源浪
费。