1。因为公司项目工程使用的是NamedParameterJdbcTemplate,所以对其进行研究
NamedParameterJdbcTemplate实现了接口NamedParameterJdbcOperations
NamedParameterJdbcTemplate.java
/** The JdbcTemplate we are wrapping */
//封装的jdbc模板
private final JdbcOperations classicJdbcTemplate;
/** Map of original SQL String to ParsedSql representation */
//对原始sql的一个缓存集合
private final Map parsedSqlCache = new HashMap();
//
public Object execute(String sql, SqlParameterSource paramSource, PreparedStatementCallback action)
throws DataAccessException {
return getJdbcOperations().execute(getPreparedStatementCreator(sql, paramSource), action);
}
说明:在这里参数sqlParameterSource是一个接口 ,抽象类AbstractSqlParameterSource 实现了SqlParameterSource 中的部分方法
public abstract class AbstractSqlParameterSource implements SqlParameterSource
setvalue抽象方法供用户自己去实现处理相关参数
protected abstract void setValues(PreparedStatement ps, LobCreator lobCreator)
AbstractSqlParameterSource 下有两个实现类BeanPropertySqlParameterSource和MapSqlParameterSource
你也可以不适用其子类,通过内部匿名类实现setValues方法处理参数就行,下面介绍其两个子类
1。BeanPropertySqlParameterSource通过一个普通的javabean对象构造BeanPropertySqlParameterSource对象
传进来的bean必须与参数名称相同
2。MapSqlParameterSource 通过传入一个hashMap构造一个参数源,或者通过调用其AddValue形成参数源
参数2abstractLobCreatingPreparedStatementCallback 实现了PreparedStatementCallback 回调接口
2abstractLobCreatingPreparedStatementCallback 通过 lobHandler构造实例
类如下
public abstract class AbstractLobCreatingPreparedStatementCallback implements PreparedStatementCallback {
并接也提供了 abstract void setValues(PreparedStatement ps, LobCreator lobCreator)抽象方法
第二个excute方法介绍
public Object execute(String sql, Map paramMap, PreparedStatementCallback action) throws DataAccessException {
return execute(sql, new MapSqlParameterSource(paramMap), action);
}
与第一个不同的是execute方法时第二个参数是一个map 他内不是通过调用第一个excute方法传递MapSqlParameterSource 也就是SqlParameterSource 的子类;
接下来看一下查询通过功能划分
第一组:
根据要查询的sql,参数源,结果集提取器进行查询下面这俩个第二个参数只不过是父子关系而已
接口ResultSetExtractor 中void processRow(ResultSet rs) throws SQLException;是为了获取结果集,对其进行处理
public Object query(String sql, SqlParameterSource paramSource, ResultSetExtractor rse)
throws DataAccessException {
return getJdbcOperations().query(getPreparedStatementCreator(sql, paramSource), rse);
}
public Object query(String sql, Map paramMap, ResultSetExtractor rse) throws DataAccessException {
return query(sql, new MapSqlParameterSource(paramMap), rse);
}
第二组:前俩个参数不在做介绍 只对第三个参数做介绍接口RowCallbackHandler
接口RowCallbackHandler 中只有一个
void processRow(ResultSet rs) throws SQLException;是为了获取结果集,对其进行处理
个人感觉RowCallbackHandler 与ResultSetExtractor 接口中的方法一样,这里可能实际使用中对其子类用的比较多吧
public void query(String sql, SqlParameterSource paramSource, RowCallbackHandler rch)
throws DataAccessException {
getJdbcOperations().query(getPreparedStatementCreator(sql, paramSource), rch);
}
public void query(String sql, Map paramMap, RowCallbackHandler rch) throws DataAccessException {
query(sql, new MapSqlParameterSource(paramMap), rch);
}
第三组 主要介绍一下第三个参数接口RowMapper 他的方法 bject mapRow(ResultSet rs, int rowNum)
处理完成后悔返回一个对象
public List query(String sql, SqlParameterSource paramSource, RowMapper rowMapper)
throws DataAccessException {
return getJdbcOperations().query(getPreparedStatementCreator(sql, paramSource), rowMapper);
}
public List query(String sql, Map paramMap, RowMapper rowMapper) throws DataAccessException {
return query(sql, new MapSqlParameterSource(paramMap), rowMapper);
}
分享到:
相关推荐
我的使用Spring的NamedParameterJdbcTemplate完成DAO操作实例 博文链接:https://zmx.iteye.com/blog/373736
NamedParameterJdbcTemplate的用法
NULL 博文链接:https://shareisattitude.iteye.com/blog/2221135
Spring:JdbcTemplate使用指南 Spring:JdbcTemplate使用指南
JSR 317: JavaTM Persistence API, Version 2.0
NULL 博文链接:https://huibin.iteye.com/blog/618316
Spring JDBC Batch更新示例 Example application describes how to perform batch operation with spring JdbcTemplate class.#技术堆栈。 1. Spring核心jdbc模块。 2. H2嵌入式数据库。 3.... 4.Lombok框架。...
视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件...n 高级应用-NamedParameterJdbcTemplate的使用 n 源码分析-TransactionTemplate n 源码分析-DataSourceUtils n 源码分析-TransactionSynchronizationManager
简单的jdbcTemplate预编译、回调等
主要介绍了Spring jdbc中数据库操作对象化模型的实例详解的相关资料,希望通过本文大家能够了解掌握这部分内容,需要的朋友可以参考下
JdbcDaoSupport、使用 NamedParameterJdbcTemplate、Spring 的声明式事务、事务的属性(传播行为、隔离级别、回滚属性、只读属性、过期时间)、使用 XML 文件的方式配置事务、整合 Hibernate、整合 Struts2 等。
namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate.getDataSource()); //初始化pagingSqlBuilder pagingSqlBuilder = new PagingSqlBuilder(((ComboPooledDataSource) ...
Proyecto Spring Boot Condeiones和JDBC的示例Elementos Utilziados HirakiConfig 数据源NamedParameterJdbcTemplate DataSourceTransactionManager LombokSqlParameterSource BeanPropertySqlParameterSource ...
可以将其视为一种类型安全和可表达SQL DSL(域特定语言),并支持呈现针对MyBatis3和Spring的NamedParameterJDBCTemplate正确格式化SQL。 该库还包含Kotlin扩展,这些扩展为SQL启用了惯用的Kotlin DSL。 该库将生成...
Bootiful SQL模板是org.springframework.jdbc.core.JdbcTemplate和org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate的简单包装,提供了以下扩展名。 流利的API 读取SQL模板文件(普通SQL文件...
提供对 spring NamedParameterJdbcTemplate、Hibernate、Mybatis 的支持 在 ParameterMapper(包括 map 和 java bean)中提供包装的 http 请求参数(自 2.0.0 起) 为http请求提供service/dao的异步调用 提供页面/...
基本的SpringJDBC LECTURE 36-40->配置-缝制LECTURE 41-48->此项目... 使用NamedParameterJdbcTemplate中的“ nameParameters”进行本地数据库连接
NamedParameterJdbcTemplate NamedParameterUtils NameMatchMethodPointcut NameMatchMethodPointcutAdvisor NameMatchTransactionAttributeSource NamespaceHandler NamespaceHandlerResolver ...
11.5.1 NamedParameterJDBCTemplate 11.5.2 SimpleJDBCTemplate 11.6 以OO方式访问数据库 11.6.1 使用MappingSqlQuery查询数据 11.6.2 使用SqlUpdate更新数据 11.6.3 使用StoredProcedure执行存储过程 11.6.4 Sql...
11.5.1 NamedParameterJDBCTemplate 11.5.2 SimpleJDBCTemplate 11.6 以OO方式访问数据库 11.6.1 使用MappingSqlQuery查询数据 11.6.2 使用SqlUpdate更新数据 11.6.3 使用StoredProcedure执行存储过程 11.6.4 Sql...