您现在的位置是:首页 >技术杂谈 >从数据库连接到Mybatis到spring到springboot梳理网站首页技术杂谈

从数据库连接到Mybatis到spring到springboot梳理

LSZXZNJ 2024-06-17 10:13:55
简介从数据库连接到Mybatis到spring到springboot梳理

这里介绍一下 数据库操作相关组件的梳理、不涉及具体的代码操作。

驱动

java.sql.Driver

JDK提供的驱动接口,指定了获取连接的标准接口,任何数据库厂家,都需要提供一个Java版本的驱动包并实现驱动接口,来完成改数据库的连接操作。

数据库连接

java.sql.Connection 

当通过驱动获取到连接后,就可以进行数据库操作了。这个连接可做很多事情,可以理解成我们通过Navicat等工具开了一个查询窗口。

例如:可以 设置 事务隔离级别、设置自动提交、提交事务、回滚事务、获取 一次数据库操作会话

操作数据库

java.sql.Statement

java.sql.PreparedStatement

java.sql.CallableStatement

 

当我们需要执行SQL语句时,就是通过数据库连接获取一个 会话对象来完成的。

可以执行SELECT :

ResultSet executeQuery(String sql) throws SQLException

可以执行INSERT/UPDATE/DELETE

int executeUpdate(String sql) throws SQLException 

当执行SELECT时,会返回查询的结果,这些结果被封装在

java.sql.ResultSet 

Mybatis

对于数据库操作,很多都是重复的工作,Mybatis包装了这些重复的工作,开发人员只需要编写SQL语句,就可以完成数据库的操作了。

 动态代理技术

Mybatis使用了JDK动态代理技术,完成了接口调用这一块的核心代码的编写。

protected T newInstance(MapperProxy<T> mapperProxy) {
    return (T) Proxy.newProxyInstance(mapperInterface.getClassLoader(), new Class[] { mapperInterface }, mapperProxy);
  }

因此,我们只要写一个接口,就可以调用这个接口的方法,来执行SQL。就是这个原理。

而,真正执行SQL的,是通过Mybatis提供的SqlSession来调用的。SqlSession提供了一些API,更方便的执行SQL。

经过一系列的包装,调用,最终代码会走到上面提到的,获取连接、获取statement、执行SQL、结果处理等。

Mybatis+Spring

Spring 在日常开发中,是必不可少的组件。怎么将Mybatis和Spring配合起来?

Mybatis提供了一个SqlSession接口来完成各种数据库的操作,只需要获取到SqlSession对象就可以了。

在mybatis-sprinig.jar包中,提供了一个 工厂类,用来创建SqlSession对象。

org.mybatis.spring.SqlSessionFactoryBean

 

因此只有在Spring容器中加入 这个工厂Bean即可。

spring boot

到这里,想要再spring boot中使用mybatis,就已经有思路了。只需要加一个 autoconfig完成SqlSession对象创建的工厂就可以了。

不论mybatis,还是spring,还是spring boot,其实,都是 在一层一层的包装,使操作越来越简单。最终还是得一层一层的解壳,用到最原始那个真正干活的东西。

(完)

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。