这里介绍一下 数据库操作相关组件的梳理、不涉及具体的代码操作。
驱动
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,其实,都是 在一层一层的包装,使操作越来越简单。最终还是得一层一层的解壳,用到最原始那个真正干活的东西。
(完)