又见mybaits之selectall源码解析

Posted cnbk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了又见mybaits之selectall源码解析相关的知识,希望对你有一定的参考价值。

一、前言

  作为一个小菜鸟对于mybatis的理解一致处于仅会用,典型的API程序员,今天正好有功夫,就稍微的解读一下源码,嘿嘿嘿~

  首先我们先创建maven,引入mybatis和mysql链接包巴拉巴拉巴~~~

  不详说,太复杂,不是今天的核心。

技术图片

 

 

   我们从这里入手,查看实现。

  第一个有趣点来了,我发现这里有一顿套娃,疯狂调用本class的方法,换言之,这里本来有很多参数,但是都设置了默认值,这些参数是什么,又默认了什么就是本次解析的核心了

二、参数

 

 

  @Override
  public <E> List<E> selectList(String statement, Object parameter, RowBounds rowBounds) {
    try {
      MappedStatement ms = configuration.getMappedStatement(statement);
      return executor.query(ms, wrapCollection(parameter), rowBounds, Executor.NO_RESULT_HANDLER);
    } catch (Exception e) {
      throw ExceptionFactory.wrapException("Error querying database.  Cause: " + e, e);
    } finally {
      ErrorContext.instance().reset();
    }
  }

 

看到有三个参数,分别是statementparameterrowBounds

我们只传入了statement

A parameter object to pass to the statement.

译文:要传递给语句的参数对象。

rowBounds 解释

Bounds to limit object retrieval

译文:限制对象检索的边界

三、默认值

rowBounds是一个default对象

public static final RowBounds DEFAULT = new RowBounds();

parameter 默认值为空

那么他是怎么获得对象呢?

查到最后传了一个   

Class<?> parameterType = parameterObject == null ? Object.class : parameterObject.getClass();

传了一Object对象

吐了 看不懂 以后再说吧

 

以上是关于又见mybaits之selectall源码解析的主要内容,如果未能解决你的问题,请参考以下文章

Mybaits 源码解析 ----- 面试源码系列:Mapper接口底层原理(为什么Mapper不用写实现类就能访问到数据库?)

Mybaits 源码解析 ----- 全网最详细,没有之一:一级缓存和二级缓存源码分析

Mybaits 源码解析 ----- Mybatis的事务如何被Spring管理?Mybatis和Spring事务中用的Connection是同一个吗?

Mybaits 源码解析 ----- Select 语句的执行过程分析(下篇)(Mapper方法是如何调用到XML中的SQL的?)全网最详细,没有之一

mybaits maven shiro mysql 后台框架源码bootstrap

性能分析之又见jbd2引起IO高