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();
}
分享到:
相关推荐
Java利用Freemarker模板自动生成dto、dao、rowmapper、bo、service代码,代码可以直接复制到项目中使用,代码是基于pring框架的
基于spring jdbc的RowMapper自动实现对象映射,大部分功能已经由spring jdbc实现了。2、数据类型的设计:集成了JFinal和SBORM的优点,对字段的大小写不敏感,对强类型实体、弱类型实体和非实体的支持。3、统一的接口...
FreeMarker通用模板。... 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 模板编写为FreeMarker Template Language (FTL)。... 那就意味着要准备数据在真实编程语言中来显示,比如...
springMVC4.0.6+spring4.0.6+hibernate4.3.6框架,基本的包结构,dao基础类的封装,rowmapper,分页等工具类的封装。
主要是如何利用@Query注释来完成增加,删除,的操作
2、基于spring jdbc的上层封装,底层jdbc操作基于JdbcTemplate,对于使用spring jdbc的人会有一点价值,比较简洁的封装可以节省很多重复劳动,具体节省多少可以看看example; 3、实现一套简单的ORM(直接使用...
④修改用户:先根据id查询员工(get请求),然后跳转到修改页面,使用form标签回显当前对象内容${pageContext.request.contextPath }/emp"method="post" modelAttribute="employee">然后将封装好的对象传给控制器...
视频详细讲解,需要的小...n 设计模式-RowMapper的策略模式 n 高级应用-NamedParameterJdbcTemplate的使用 n 源码分析-TransactionTemplate n 源码分析-DataSourceUtils n 源码分析-TransactionSynchronizationManager
利用java小窗口读取mdb数据库中的数据,并将其显示出来
5.1.7 RowMapper的使用 107 拓展: 108 DataSource注入的三种方式: 108 5.1.8声明式事务管理 116 5.1.8.1Spring的事务管理器 117 5.1.8.2Spring事务的传播属性 117 5.1.8.3Spring事务的隔离级别 117 拓展: 118 5.1...
rowMapper public double findBookPriceByIsbn(String isbn); //更新书的库存,使书号对应的库存减num,若库存不足,则给出提示,并且不更新 public void updateBookStock(String isbn, int num); //更新用户的...
/** * 该方法可以创立数据库链接,须在项目src目录下配置文件名为:“jdbcutil.properties”的文件, ... * * @return Connection ... public static <E>List<E> query(String sql,RowMapper<E> rm,Object...obj)
spring 中对大数据的处理,包括clob,blob的数据。比之jdbc下简便很多。
RowMapper 17.11.4. Query for a single object 17.11.5. Query using a CommandCreator 17.12. DataTable and DataSet 17.12.1. DataTables 17.12.2. DataSets 17.13. Deriving Stored Procedure Parameters 17.14...
springjdbc-constructor-mapper.zip,spring的rowmapper实现,用于对其构造函数进行注释的类
import org.springframework.jdbc.core.RowMapper; import entity.Material; public class MaterialService extends BaseService { /** * 把一条材料信息加入到数据库中 */ public void addMr...
动态实体映射使得各种查询不再需要写大量的RowMapper。功能简介:1:常用的JPA注解支持。2:简化的批处理操作。4:简化的分页操作。5:灵活的链式查询API和SQL构造器。6:实体属性动态映射。7:支持多种数据库...
jdbc助手MetadataAwareRowMapper(Spring RowMapper)的Poc。 当重用映射器用于例如连接查询时可能会有所帮助,其中不同表中的列名可能会发生冲突。
final List l = t.query("SELECT * FROM jt_employee", new RowMapper() { public Object mapRow(ResultSet rs, int rowNum) throws SQLException { MappedRow(rs.getInt(1), rs.getString(2)); } }); ...