package com.xinhuanet.cloudDesk.dao.impl;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import org.springframework.jdbc.core.RowMapper;
public abstract class BaseRowMapper<T> implements RowMapper {
private static final Logger log = Logger.getLogger(BaseRowMapper.class);
@Override
public T mapRow(ResultSet rs, int index) throws SQLException {
try {
Class clazz = Class.forName(this.getClassName());
Object obj = clazz.newInstance();
for (Class clazztemp = clazz; clazztemp != Object.class; clazztemp = clazztemp
.getSuperclass()) {
Field[] fields = clazztemp.getDeclaredFields();
if (fields == null) {
return null;
}
for (int i = 0; i < fields.length; i++) {
String fieldName = fields[i].getName();
Class fieldClass = fields[i].getType();
String methodName = "set"
+ fieldName.substring(0, 1).toUpperCase()
+ fieldName.substring(1);
Method method = clazztemp.getDeclaredMethod(methodName,
new Class[] { fieldClass });
Object param = null;
try {
param = rs.getObject(fieldName.toLowerCase());
if(param != null) {
method.invoke(obj, param);
}
} catch (Exception e) {
log.error("fieldName:" + fieldName + "是" + fieldClass
+ "目标参数是:" + param.getClass());
log.error(e);
}
}
}
return (T) obj;
} catch (Exception e) {
log.error(e);
e.printStackTrace();
return null;
}
}
/**
* 子类的类名
*
* @return
*/
public abstract String getClassName();
}
分享到:
相关推荐
本主题涉及的核心技术是使用Freemarker模板引擎来生成DTO(Data Transfer Object)、DAO(Data Access Object)、RowMapper、BO(Business Object)和服务层代码。这些组件在Spring框架中扮演着重要角色。 1. **...
- 如果是查询操作,可以使用`RowMapper`或`ResultSetExtractor`来映射结果到Java对象。 8. **性能考虑** 尽管SpringJdbcTemplate提供了便利,但在高并发、大数据量的场景下,可能需要考虑其性能。例如,大量数据...
在封装SQL时,考虑SQL的执行效率,合理使用索引,避免全表扫描,减少JOIN操作,以及适时地进行SQL缓存。 综上所述,SQL语句封装是提高开发效率、保证代码质量的重要手段。通过不同的封装方式,我们可以根据项目需求...
new RowMapper() { @Override public User mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); // 其他...
- `query(String sql, RowMapper<T> rowMapper)`:执行查询并使用自定义的RowMapper将结果映射到对象。 - `update(String sql)`:执行更新操作,如INSERT、UPDATE或DELETE。 - `execute(String sql)`:执行任意的...
这个"java数据库操作封装.zip"压缩包中的文件,如JDBCcontrol.java、ConnectionManagement.java、PreparedStatementSetter.java和RowMapper.java,都是围绕这个目标设计的。下面我们将详细讲解这些类和接口的功能...
args)`: 执行查询并使用RowMapper转换结果集为Java对象。 - `queryForList(String sql, Class<T> elementType, Object... args)`: 查询并返回List类型的集合。 - `queryForObject(String sql, RowMapper<T> ...
- **使用RowMapper接口**:用户自定义映射规则,直接获取对象。 ```java public <T> List<T> query(String sql, RowMapper<T> rowMapper, Object... args) { // 实现细节略 } public interface RowMapper<T> { T...
params)`,查询通常使用`query(String sql, RowMapper<T> rowMapper, Object... params)`,删除操作则是`delete(String sql, Object... params)`。这些方法都处理了异常和资源关闭,使得代码更易读,更不易出错。 ...
基于spring jdbc的RowMapper自动实现对象映射,大部分功能已经由spring jdbc实现了。2、数据类型的设计:集成了JFinal和SBORM的优点,对字段的大小写不敏感,对强类型实体、弱类型实体和非实体的支持。3、统一的接口...
在IT行业中,Spring框架是Java开发中的一个核心组件,尤其在企业级应用中广泛使用。Spring3 JDBC(Java Database Connectivity)模块是Spring框架的一部分,它提供了对数据库操作的支持,简化了传统的JDBC编程。本篇...
使用`queryForObject(String sql, Object[] args, RowMapper<T> rowMapper)`进行参数化的单行查询,或者`query(String sql, PreparedStatementSetter pss, RowMapper<T> rowMapper)`,使用PreparedStatementSetter...
2、基于spring jdbc的上层封装,底层jdbc操作基于JdbcTemplate,对于使用spring jdbc的人会有一点价值,比较简洁的封装可以节省很多重复劳动,具体节省多少可以看看example; 3、实现一套简单的ORM(直接使用...
FreeMarker通用模板。... 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 模板编写为FreeMarker Template Language (FTL)。... 那就意味着要准备数据在真实编程语言中来显示,比如...
Spring框架是Java开发中广泛使用的轻量级框架,它提供了对数据库操作的强大支持,通过封装JDBC(Java Database Connectivity)来简化数据访问。在本例中,我们将深入探讨Spring如何通过JdbcTemplate实现对数据库的...
1. `query(String sql, RowMapper<T> rowMapper)`:此方法用于执行SQL查询,并使用RowMapper将结果行映射为自定义对象。RowMapper是一个接口,你需要实现`mapRow(ResultSet rs, int rowNum)`方法,该方法将ResultSet...
在Java开发领域,Spring Data是一个强大的框架,它简化了数据访问层的实现,尤其是在使用JPA(Java Persistence API)时。`@Query`是Spring Data JPA提供的一个关键注解,用于执行自定义的SQL或者HQL(Hibernate ...
`JdbcUtils.java`可能是提供了一些数据库连接和JdbcTemplate使用的辅助方法,如数据库连接池的配置,或者封装了JdbcTemplate的执行方法,以提高代码复用性。例如: ```java public class JdbcUtils { private ...
例如,`query(String sql, RowMapper<T> rowMapper)`方法用于执行SQL查询,并使用RowMapper将结果集映射到Java对象。RowMapper是一个接口,需要实现`mapRow(ResultSet rs, int rowNum)`方法,将ResultSet中的每一行...