Escusado será dizer que os benefícios do aprendizado de código -fonte são pequenos em volume e simples em lógica, por isso vou escrever uma série de artigos para aprender.
SQLSession
O portal de uso do Mybatis está localizado no SQLSession no pacote org.apache.ibatis.session. Verificou -se que é uma interface e deve haver uma classe de implementação padrão padrão PadrãoSqlSession no pacote org.apache.ibatis.session.defaults. Nunca temos nova classe e, de acordo com as convenções Java, usamos o método da fábrica no SQLSessionFactory. Descobri que também é uma interface, portanto, deve haver uma classe de implementação padrão defaultSqlSessionFactory. Essa classe ainda não precisa ser criada por si só e usa o método de fábrica no SQLSessionFactoryBuilder.
PadrãoSqlSession
Os principais métodos no padrãoSQLSession:
1) Cursor <T> SelectCursor (instrução String, parâmetro de objeto, RowBounds RowBounds), delegado ao Execoror.QueryCursor (MS, WrapCollection (Parâmetro), RowBounds).
2) Listar <E> SELECTLIST (instrução String, parâmetro de objeto, rowbounds rowbounds) e void Select (instrução String, parâmetro de objeto, rowbounds rowbounds, manipulador de resulta) e delegado ao executor.Query (ms, wrapcollection (paraparas), linhas de rowbounds, manual).
3) Int Update (instrução String, parâmetro de objeto), delegado para executor.update (ms, wrapCollection (parâmetro)).
Pode -se observar que existe um executor para concluí -lo no final.
Executor
Executor está localizado no pacote org.apache.ibatis.executor. É uma interface. As classes de implementação são Baseexecutor e CachingExecutor. Entre eles, o Baseexecutor é abstrato e possui três subclasses SimpleExecutor, Reuseexecutor e BatchExecutor. Veja o nome e saiba o significado. Os principais métodos no Baseexecutor:
1) List<E> query(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, CacheKey key, BoundSql boundSql) and List<E> queryFromDatabase(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, CacheKey key, BoundSql boundSql), Delegado como abstrato <E> LIST <E> DOQUERY (MAPPEDSTATEMENT MS, Parâmetro do Objeto, RowBounds ROWBOUNDS, RESUTHandler Resulthandler, Boundsql Boundsql).
2) Cursor <E> QueryCursor (MAPPEDSTATEMENT MS, Parâmetro do Objeto, Rowbounds ROWBOUNDS), delegado para abstrair <e> cursor <E> DOQUERYCURSOR (MAPPEDSTATEMENT MS, parâmetro de objeto, RowBounds Rowbounds, BoundSQL BoundSql).
3) Int Update (MappEdStatement MS, Parâmetro do Objeto), Delegado para Abstract Int Doupdate (MappedStatement MS, Parâmetro do Objeto).
A classe base processa a parte pública, deixando -a para a implementação da subclasse.
Vamos dar uma olhada nos principais métodos do SimpleExector:
1) Lista <E> DOQUERY (MAPPEDSTATEMENT MS, Parâmetro do Objeto, RowBounds Rowbounds, ResultHandler Resulthandler, Boundsql Boundsql), delegado ao manipulador.
2) Cursor <e> DoQueryCursor (MAPPEDSTATEMENT MS, Parâmetro do Objeto, ROWBOUNDS ROWBOUNDS, Boundsql Boundsql), confiado ao manipulador. <E> QueryCursor (STMT).
3) Int Doupdate (MappedStatement MS, Parâmetro do Objeto), Delegado ao Handler.Update (STMT).
Pode -se observar que finalmente é tratado pelo manipulador.
Declaração
O DeclarationHandler está localizado no pacote org.apache.ibatis.executor.statement. É uma interface. As classes de implementação são BaseStatementHandler e RoutingStatementHandler. O BasestatementHandler é abstrato e possui três subclasses SimpleStatementHandler, preparadostatementhandler e callablestatementhandler. Esses três devem estar familiarizados e devem lidar com instruções SQL sem parâmetros, instruções SQL parametrizadas e procedimentos armazenados, respectivamente. Vejamos os principais métodos no SimpleStatementHandler:
1) Listar <E> consulta (declaração de declaração, resultHandler ResultHandler), delegada ao declaração.execute (SQL).
2) cursor <e> querycursor (declaração), delegado ao declaração.execute (SQL).
3) INT UPDATE (Declaração), Delegado ao Declaração.Execute (SQL).
Finalmente, o SQL é executado por instrução. Isso retorna ao pacote Java.SQL.
O Mybatis conclui principalmente o processamento de encapsulamento dos parâmetros SQL, obtém o conjunto de resultados e gera objetos e deixa o processo de construção das instruções SQL para o usuário. O autor de Mybatis o projetou dessa maneira. Embora a estrutura seja semi-automática em geral, sua flexibilidade aumentou bastante.