Spring JDBC源码实现
2025-08-11 15:38:08 1 举报
AI智能生成
Spring JDBC源码实现
作者其他创作
大纲/内容
JdbcTemplate#execute(final String sql)
ExecuteStatementCallback
doInStatement
JdbcTemplate#execute(new ExecuteStatementCallback(), true)
DataSourceUtils#getConnection(dataSource)
DataSourceUtils#doGetConnection(dataSource)
ConnectionHolder conHolder= TransactionSynchronizationManager#getResource(dataSource)
Connection con = DataSourceUtils#fetchConnection(dataSource)
conHolder.setConnection(con)
ProxyConnection#createStatement()
JdbcTemplate#applyStatementSettings
StatementCallback#doInStatement
JdbcTemplate#handleWarnings
JdbcUtils#closeStatement
DataSourceUtils#releaseConnection
DataSourceUtils#doReleaseConnection
conHolder.released()
DataSourceUtils#doCloseConnection
ProxyConnection#close
JdbcTemplate#query(final String sql, final ResultSetExtractor<T> rse)
QueryStatementCallback
doInStatement
executeQuery
extractData
JdbcUtils.closeResultSet
JdbcTemplate#execute(new ExecuteStatementCallback(), true)
设置参数过程
RdbmsOperation#declareParameter(param)
RdbmsOperation#isCompiled
declaredParameters.add(param)
编译过程
RdbmsOperation#compile
RdbmsOperation#isCompiled
JdbcAccessor#afterPropertiesSet
SqlOperation#compileInternal
preparedStatementFactory = new PreparedStatementCreatorFactory(this.resolveSql(), this.getDeclaredParameters());
RdbmsOperation#getDeclaredParameters
setResultSetType
setUpdatableResults
setReturnGeneratedKeys
setGeneratedKeysColumnNames
SqlOperation#onCompileInternal
执行查询
SqlQuery#executeByNamedParam(Map<String, ?> paramMap, @Nullable Map<?, ?> context)
RdbmsOperation#validateNamedParameters(paramMap)
SqlOperation#getParsedSql
NamedParameterUtils#parseSqlStatement(sql)
NamedParameterUtils#substituteNamedParameters(parsedSql, paramSource)
NamedParameterUtils#buildValueArray(parsedSql, paramSource, this.getDeclaredParameters())
SqlQuery#newRowMapper
this.getJdbcTemplate().query(this.newPreparedStatementCreator(sqlToUse, params), rowMapper)
执行更新
SqlUpdate#updateByNamedParam(Map<String, ?> paramMap)
RdbmsOperation#validateNamedParameters(paramMap)
SqlOperation#getParsedSql
NamedParameterUtils#parseSqlStatement(sql)
NamedParameterUtils#substituteNamedParameters(parsedSql, paramSource)
NamedParameterUtils#buildValueArray(parsedSql, paramSource, this.getDeclaredParameters())
this.getJdbcTemplate().update(this.newPreparedStatementCreator(sqlToUse, params))
SqlUpdate#checkRowsAffected
SqlFunction#run(java.lang.Object...)
SqlQuery#findObject(parameters)
SqlQuery#execute()
RdbmsOperation#validateParameters
RowMapper<T> rowMapper = this.newRowMapper(params, context);
this.getJdbcTemplate().query(this.newPreparedStatementCreator(params), rowMapper)
DataAccessUtils#singleResult
results.iterator().next()
iBatis
SqlMapClientFactoryBean
SqIMapClient
SqlMapClientTemplate
SqlMapSession session=this.sqlMapClient.openSession()
datasource=getDataSource()
con = dataSource.getConnection()
session.setUserConnection(con)
sqlMapclientcallback.doInSqlMapclient(session)
DataSourceUtils.doReleaseConnection(springCon,dataSource);
Hibernate
LocalSessionFactoryBean
SessionFactory
HibernateTemplate
Session session = SessionFactoryUtils.getNewSession(getSessionFactory())
sessionFactory.openSession()
sqlMapclientcallback.doInHibernate(session)
SessionFactoryUtils.closeSession(session);
0 条评论
下一页