公司的框架主要是采用spring的。因为是刚刚进公司前几天一直在看源码。现在写下过程,也算是一种积累。之前用的是hinernate,对jdbcTemplate的东西还是不熟。
先从Dao的父类AbstractJdbcDAO来说起,里面有这样一个方法:
public List queryForList(String sql, Map params, RowMapper mapper) throws DataAccessException {
try {
return getNamedParameterJdbcTemplate().query(sql, params, mapper);
} catch (EmptyResultDataAccessException e) {
return Collections.EMPTY_LIST;
}
}
参数RowMapper用于封装ResultSet。这样得到的list的里面每项都为一个map。公司mapRow默认实现如下:
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
Map mapOfColValues = createColumnMap(columnCount);
for (int i = 1; i <= columnCount; i++) {
String key = getColumnKey(JdbcUtils.lookupColumnName(rsmd, i));
String otherKey = DynamicBeanUtils.decodeUnderscoreName(key);
int type = rsmd.getColumnType(i);
Object obj = null;
if (type == 1 || type == 12)
obj = getStringValue(rs, i);
else if (type == -1)
obj = getLongStringValue(rs, i);
else if (type == 2005)
obj = getClobStringValue(rs, i);
else
obj = getColumnValue(rs, i);
mapOfColValues.put(key, obj);
mapOfColValues.put(otherKey, obj);
}
return mapOfColValues;
}
这段代码写的不是很好,首先没有用Types中的常量。另外对于key的处理在最后完全可以只保留
mapOfColValues.put(otherKey, obj);
当然更好的方法是将结果封装在bo里面,最简单的方法是每个bo就都定义自己的RowMapper实现,这样有些麻烦。公司提供了一个方法,就是采用的是java的反射机制来实现这部分的。
public Object queryForBean(String sql, Map params, Class _class)
throws DataAccessException {
return queryForObject(sql, params, DynamicBeanRowMapper.getInstance(
_class, getSqlHelper(), sql));
}
DynamicBeanMapper负责生成封装了bo的rowMapper。
分享到:
相关推荐
`JdbcTemplate`是Spring对JDBC的轻量级封装,它消除了手动管理连接、事务和结果集的繁琐过程,提高了代码的可读性和可维护性。通过使用模板方法设计模式,`JdbcTemplate`提供了一系列静态和非静态的方法来执行各种...
源码分析有助于理解其工作原理,以便于进行更高效的定制或扩展。 标签"工具"可能指的是JdbcTemplate作为一个工具类库的角色,它是Spring提供的众多数据库访问工具之一,可以帮助开发者构建健壮、易于维护的数据库...
3. **Spring JDBC**:Spring提供了JdbcTemplate和JpaTemplate等工具类,简化了数据库访问。它们封装了SQL执行和结果集处理,减少了重复代码,提高了可测试性。同时,Spring的数据源管理、事务管理与JDBC紧密结合,...
### Spring源码分析知识点 #### 一、Spring框架概述 Spring框架是一个全面的企业级应用开发框架,它通过一系列模块化的组件来支持不同的应用场景和技术需求。Spring的核心价值在于提供了一种简洁的方式来解决企业...
Java源码分析是软件开发过程中一个重要的学习环节,它能帮助开发者深入理解代码背后的逻辑,提升编程技巧,以及优化程序性能。在这个过程中,我们通常会关注类的设计、算法的应用、数据结构的选择,以及如何利用Java...
Spring5源码分析笔记旨在深入理解Spring的工作原理,帮助开发者提升技能,优化代码,以及更好地利用其核心特性。以下是对Spring5源码的一些关键知识点的详细解释: 1. **依赖注入(Dependency Injection,DI)**:...
《Spring源码分析》 Spring框架作为Java领域中不可或缺的一部分,其强大之处在于它提供了丰富的功能,包括依赖注入(Dependency Injection,简称DI)、面向切面编程(Aspect-Oriented Programming,简称AOP)、事务...
n 源码分析-自定义JdbcTemplate n 设计模式-RowMapper的策略模式 n 高级应用-NamedParameterJdbcTemplate的使用 n 源码分析-TransactionTemplate n 源码分析-DataSourceUtils n 源码分析-...
关于`JdbcDaoSupport`的源码分析,我们可以看到它主要是通过`protected JdbcTemplate getJdbcTemplate()`方法获取`JdbcTemplate`实例。如果用户没有显式设置,`JdbcTemplate`会在初始化时通过`initJdbcTemplate()`...
nimble-orm是一款灵活且轻量级的ORM框架,它是针对Spring JdbcTemplate进行了一层封装,旨在提高开发效率,特别是对于那些表结构变动频繁的互联网项目。nimble-orm的核心在于它能够帮助开发者快速实现对MySQL数据库...
源码分析可以帮助我们理解SessionFactory的创建过程和使用方式。 5. **JPA集成** 对于JPA,Spring-ORM通过LocalContainerEntityManagerFactoryBean创建EntityManagerFactory。源码展示了Spring如何配置实体扫描、...
在实际开发中,`easyframework-data-master` 文件夹可能包含源码、示例项目、配置文件等资源,通过阅读和分析这些文件,可以更好地理解和使用EasyFramework-Data框架。 总之,EasyFramework-Data 是一个旨在简化...
三、Spring 2.5.6源码分析 1. **BeanFactory和ApplicationContext**:源码中可以看到Spring如何通过BeanFactory创建并管理bean,以及ApplicationContext如何扩展BeanFactory提供更多的企业级功能。 2. **AOP实现**...
《深入理解JdbcTemplate:基于chap04.rar源码分析》 在Java的Web开发中,数据库操作是不可或缺的一部分。Spring框架中的JdbcTemplate是为了解决数据访问层的繁琐工作而设计的一个工具,它提供了一种简化数据库操作...
源码中,`JdbcTemplate`和`HibernateTemplate`是两个典型的数据库访问模板类,它们封装了SQL执行和结果集处理,简化了数据库操作。 5. **Web层(Web)**:Spring MVC是Spring框架的Web部分,提供了一种模型-视图-...
`JdbcTemplate`和`NamedParameterJdbcTemplate`提供了一种简洁的SQL执行方式,而`HibernateTemplate`则是对Hibernate的封装。 Spring MVC是Spring提供的Web MVC框架,用于构建Web应用程序。它包含`...
1. **Spring对注解_Annotation_处理源码分析**: - 这部分内容将讲解Spring如何扫描和读取Bean定义,以及如何解析和注入注解配置的资源。它涵盖了Spring的组件扫描机制,如何识别和处理类上的注解,以及注解驱动的...
源码分析有助于深入理解其工作原理,提升编程技能,以及解决实际问题时能够更有效地调试和优化。下面将对Spring 2.5版本的源码进行详细的解析。 1. **核心模块**:Spring的核心模块主要包括`core-container`和`...
源码分析可以帮助开发者深入理解其工作原理,从而更好地利用和定制Spring功能。 1. **依赖注入(Dependency Injection,DI)**:这是Spring的核心特性之一,通过反转控制(Inversion of Control,IoC)容器,将对象...
4. **源码分析**: - 深入理解Spring JDBC的源码,可以发现它对JDBC的优化主要体现在批处理、结果集处理和事务控制等方面。 - JdbcTemplate通过PreparedStatementCreator和RowCallbackHandler等接口,实现了SQL的...