Mybatis执行体系一

                                     mybatis 执行体系一

前言: mybatis是一款半自动的orm框架,简化了jdbc查询.

我们传统的JDBC 查询是这样子的 

public class MybatisTest {
    String url = "jdbc:mysql://localhost:3306/python";
    String username ="root";
    String password ="123456";
    private Connection connection;


    @Before
    public void init() throws SQLException, ClassNotFoundException {
        // 因为有了SPI ,所以我们不需要手动的去Class.forName
        //        Class.forName("com.mysql.jdbc.driver");
        connection = DriverManager.getConnection(url,username,password);
    }
    @After
    public void finish() throws SQLException {
        connection.close();
    }
    @Test
    public void testJdbc () throws SQLException {
        String sql = "select  * from  git";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        ResultSet resultSet = preparedStatement.executeQuery();
        while (resultSet.next()) {
            System.out.println(resultSet.getString(1));
        }
        resultSet.close();
        preparedStatement.close();
    }
}

知识点  SPI ->Service Provider Interface 因为有了spi机制 ,我们不需要自己去Class.forName去加载类

Mybatis 的查询流程是这样子的。

使用mybatis 后,我们不需要去处理结果集合,只需要使用对应的数据类型来接收就好了,代码的结构性和整洁性得到了提升。

前言完毕。

 

现在我们简单的打断点debug一下。

发现第一步走的是 mapperProxy.invoke方法

第二步走的是 MapperMethod。execute 方法

第三步走的是 sqlsession 的 selectList方法

第四步走的是 CachingExecutor 的query方法

第五步走的是BaseExecutor 的query方法

第六步骤走的是

doquery 方法

第七步骤走得是preparedStatement 的query方法

第八步 使用 resulthandler 处理结果 并返回

 

简单看完上面的执行流程以后我们可以把mybatis的 流程分成四大块

到此mybatis的基本执行体系分析完成。

MyBatis是一个开源的Java持久化框架,它提供了一种将数据库操作与Java对象之间的映射关系进行配置的方式。其体系结构主要包括以下几个核心组件: 1. SqlSessionFactory:是MyBatis的核心接口,用于创建SqlSession对象。SqlSession是与数据库进行交互的会话对象。 2. Configuration:是MyBatis的全局配置对象,包含了MyBatis的所有配置信息。它可以通过XML配置文件或者Java代码进行配置。 3. Mapper:Mapper是定义了操作数据库的接口,在MyBatis中,我们需要为每个Mapper接口提供一个对应的Mapper XML文件或者使用注解方式进行配置。Mapper接口中定义了数据库操作的方法。 4. SqlSession:SqlSession是与数据库进行交互的会话对象,它提供了执行SQL语句、获取Mapper接口实例等功能。SqlSession可以通过SqlSessionFactory创建。 5. Executor:Executor负责SQL语句的执行,根据不同的配置可以选择SimpleExecutor(简单执行器)、ReuseExecutor(可重用执行器)或BatchExecutor(批量执行器)。 6. StatementHandler:StatementHandler负责SQL语句的处理和执行,根据不同的配置可以选择不同的StatementHandler,如PreparedStatementHandler(预编译处理器)等。 7. ResultSetHandler:ResultSetHandler负责对SQL执行结果的处理,将结果映射为Java对象或者集合。 这些组件相互配合,实现了MyBatis的基本功能,即将数据库操作与Java对象之间的映射关系进行配置,并提供了灵活而高效的数据库访问方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值