数据库几个中间件的关系及大致原理 - mybatis、druid、shading-jdbc


mysql架构示意图:

 

最原始的JDBC实现(mysql-connctor-java): 加载JDBC驱动程序 → 建立数据库连接Connection → 创建执行SQL的语句Statement(preparedStatement) → 处理执行结果ResultSet → 释放资源

 

DataSource->Connection->Statement

 

DataSource的核心方法:

public interface DataSource extends CommonDataSource,Wrapper {

  Connection getConnection() throws SQLException;

  Connection getConnection(String username, String password)
  throws SQLException;
}

Connection核心api:

public interface Connection extends Wrapper, AutoCloseable {

  Statement createStatement() throws SQLException;

  PreparedStatement prepareStatement(String sql) throws SQLException;

  CallableStatement prepareCall(String sql) throws SQLException;

  void setAutoCommit(boolean autoCommit) throws SQLException;

  boolean getAutoCommit() throws SQLException;

  void commit() throws SQLException;

  void rollback() throws SQLException;

  void close() throws SQLException;

  boolean isClosed() throws SQLException;
}

Statement核心API定义,执行静态的sql:

public interface Statement extends Wrapper, AutoCloseable {

  ResultSet executeQuery(String sql) throws SQLException;

  int executeUpdate(String sql) throws SQLException;

  void close() throws SQLException;

  boolean execute(String sql, String columnNames[]) throws SQLException;

  boolean isClosed() throws SQLException;

  public boolean isCloseOnCompletion() throws SQLException;

}


ibatis的核心应该是重写statement

sharding-jdbc核心应该也是对statement

druid核心应该是Connection

各个中间件通过Statement的execute向下递归调用

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM