Javaweb之JDBC的详细解析

2024-01-01 23:54:22

2. JDBC介绍(了解)

2.1 介绍

通过Mybatis的快速入门,我们明白了,通过Mybatis可以很方便的进行数据库的访问操作。但是大家要明白,其实java语言操作数据库呢,只能通过一种方式:使用sun公司提供的 JDBC 规范。

Mybatis框架,就是对原始的JDBC程序的封装。

那到底什么是JDBC呢,接下来,我们就来介绍一下。

JDBC: ( Java DataBase Connectivity ),就是使用Java语言操作关系型数据库的一套API。

本质:

  • sun公司官方定义的一套操作所有关系型数据库的规范,即接口。

  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包。

  • 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

2.2 代码

下面我们看看原始的JDBC程序是如何操作数据库的。操作步骤如下:

  1. 注册驱动

  2. 获取连接对象

  3. 执行SQL语句,返回执行结果

  4. 处理执行结果

  5. 释放资源

在pom.xml文件中已引入MySQL驱动依赖,我们直接编写JDBC代码即可

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/mybatis";
 ? ? ? ?String username = "root";
 ? ? ? ?String password = "1234";
 ? ? ? ?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<User> 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);
 ? ? ?  }
 ?  }
}

DriverManager(类):数据库驱动管理类。

  • 作用:

    1. 注册驱动

    2. 创建java代码和数据库之间的连接,即获取Connection对象

Connection(接口):建立数据库连接的对象

  • 作用:用于建立java程序和数据库之间的连接

Statement(接口): 数据库操作对象(执行SQL语句的对象)。

  • 作用:用于向数据库发送sql语句

ResultSet(接口):结果集对象(一张虚拟表)

  • 作用:sql查询语句的执行结果会封装在ResultSet中

通过上述代码,我们看到直接基于JDBC程序来操作数据库,代码实现非常繁琐,所以在项目开发中,我们很少使用。 在项目开发中,通常会使用Mybatis这类的高级技术来操作数据库,从而简化数据库操作、提高开发效率。

2.3 问题分析

原始的JDBC程序,存在以下几点问题:

  1. 数据库链接的四要素(驱动、链接、用户名、密码)全部硬编码在java代码中

  2. 查询结果的解析及封装非常繁琐

  3. 每一次查询数据库都需要获取连接,操作完毕后释放连接, 资源浪费, 性能降低

2.4 技术对比

分析了JDBC的缺点之后,我们再来看一下在mybatis中,是如何解决这些问题的:

  1. 数据库连接四要素(驱动、链接、用户名、密码),都配置在springboot默认的配置文件 application.properties中

  2. 查询结果的解析及封装,由mybatis自动完成映射封装,我们无需关注

  3. 在mybatis中使用了数据库连接池技术,从而避免了频繁的创建连接、销毁连接而带来的资源浪费。

使用SpringBoot+Mybatis的方式操作数据库,能够提升开发效率、降低资源浪费

而对于Mybatis来说,我们在开发持久层程序操作数据库时,需要重点关注以下两个方面:

  1. 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

  2. Mapper接口(编写SQL语句)

    @Mapper
    public interface UserMapper {
     ? ?@Select("select id, name, age, gender, phone from user")
     ? ?public List<User> list();
    }

文章来源:https://blog.csdn.net/qq_69748833/article/details/135330212
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。