通过Mybatis的快速入门,我们明白了,通过Mybatis可以很方便的进行数据库的访问操作。但是大家要明白,其实java语言操作数据库呢,只能通过一种方式:使用sun公司提供的 JDBC 规范。
Mybatis框架,就是对原始的JDBC程序的封装。
那到底什么是JDBC呢,接下来,我们就来介绍一下。
JDBC: ( Java DataBase Connectivity ),就是使用Java语言操作关系型数据库的一套API。
本质:
sun公司官方定义的一套操作所有关系型数据库的规范,即接口。
各个数据库厂商去实现这套接口,提供数据库驱动jar包。
我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
下面我们看看原始的JDBC程序是如何操作数据库的。操作步骤如下:
注册驱动
获取连接对象
执行SQL语句,返回执行结果
处理执行结果
释放资源
在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(类):数据库驱动管理类。
作用:
注册驱动
创建java代码和数据库之间的连接,即获取Connection对象
Connection(接口):建立数据库连接的对象
作用:用于建立java程序和数据库之间的连接
Statement(接口): 数据库操作对象(执行SQL语句的对象)。
作用:用于向数据库发送sql语句
ResultSet(接口):结果集对象(一张虚拟表)
作用:sql查询语句的执行结果会封装在ResultSet中
通过上述代码,我们看到直接基于JDBC程序来操作数据库,代码实现非常繁琐,所以在项目开发中,我们很少使用。 在项目开发中,通常会使用Mybatis这类的高级技术来操作数据库,从而简化数据库操作、提高开发效率。
原始的JDBC程序,存在以下几点问题:
数据库链接的四要素(驱动、链接、用户名、密码)全部硬编码在java代码中
查询结果的解析及封装非常繁琐
每一次查询数据库都需要获取连接,操作完毕后释放连接, 资源浪费, 性能降低
分析了JDBC的缺点之后,我们再来看一下在mybatis中,是如何解决这些问题的:
数据库连接四要素(驱动、链接、用户名、密码),都配置在springboot默认的配置文件 application.properties中
查询结果的解析及封装,由mybatis自动完成映射封装,我们无需关注
在mybatis中使用了数据库连接池技术,从而避免了频繁的创建连接、销毁连接而带来的资源浪费。
使用SpringBoot+Mybatis的方式操作数据库,能够提升开发效率、降低资源浪费
而对于Mybatis来说,我们在开发持久层程序操作数据库时,需要重点关注以下两个方面:
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
Mapper接口(编写SQL语句)
@Mapper
public interface UserMapper {
? ?@Select("select id, name, age, gender, phone from user")
? ?public List<User> list();
}