利用反射实现JavaBean的自动赋值(六)
来源:互联网 发布:纪学锋巨人网络股票 编辑:程序博客网 时间:2024/05/24 04:43
最近开发公司的一个项目,因项目不是很大的项目,所以仅仅采用了spring MVC框架,但是数据库很多表中的字段至少15个,这样当每次将数据库表中的数据取出来放入javabean中时,写setXXX方法总是要写很多遍,而且容易出错,很是麻烦,所以采用了反射和泛型的方式,自动给javabean赋值。当然有个缺点,就是数据库中的字段名要跟javabean中的字段名相同,并且字段类型要相同。如果想做成更好的话,可以采用配置文件的方式,在此就不写了。代码如下:
// 根据传过来的对象和ResultSet自动给对象赋值
public static <T> List<T> getBean(ResultSet rs, T object) throws Exception {
Class<?> classType = object.getClass();
ArrayList<T> objList = new ArrayList<T>();
//SqlRowSet srs = jdbcTemplate.queryForRowSet(sql);
Field[] fields = classType.getDeclaredFields();//得到对象中的字段
while (rs.next()) {
//每次循环时,重新实例化一个与传过来的对象类型一样的对象
T objectCopy = (T) classType.getConstructor(new Class[] {}).newInstance(new Object[] {});
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
String fieldName = field.getName();
Object value = null;
//根据字段类型决定结果集中使用哪种get方法从数据中取到数据
if (field.getType().equals(String.class)) {
value = rs.getString(fieldName);
if(value==null){
value="";
}
}
if (field.getType().equals(int.class)) {
value = rs.getInt(fieldName);
}
if (field.getType().equals(java.util.Date.class)) {
value = rs.getDate(fieldName);
}
// 获得属性的首字母并转换为大写,与setXXX对应
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String setMethodName = "set" + firstLetter
+ fieldName.substring(1);
Method setMethod = classType.getMethod(setMethodName,
new Class[] { field.getType() });
setMethod.invoke(objectCopy, new Object[] { value });//调用对象的setXXX方法
}
objList.add(objectCopy);
}
if(rs != null){
rs.close();
}
return objList;
}
上面方法的使用如类为User:
User user = new User();
List<User> list = getgetBean(resultSet , user);//将得到list集合,里面是有user对象组成的。
- 利用反射实现JavaBean的自动赋值(六)
- 利用反射实现JavaBean的自动赋值
- 利用反射实现实体类自动赋值
- 利用映射实现两个结构相同javabean的赋值
- 利用java反射机制对多属性javabean赋值
- 反射给javabean赋值
- 同类型对象利用反射自动赋值
- DAO层通用实现,结果集ResultSet转化为javaBean的反射实现,自动生成javaBean
- JavaBean 反射机制实现自动配置数据
- 利用反射实现两个对象赋值
- 利用“反射”给类的属性赋值。
- 利用反射把DataTable自动赋值到Model实体(自动识别数据类型)
- 利用java反射机制实现自动调用类的方法
- 利用反射机制 实现 javabean 转化为 map
- 利用反射实现自动生成页面
- 利用java反射实现两个具有相同属性bean赋值
- 利用java反射实现两个具有相同属性bean赋值
- 利用fastjson和反射实现为VO属性赋值
- 项目重构经验一 ——重新规划Android项目的目录结构
- IFeatureSelection接口
- php操作redis中的hash和zset类型数据的方法
- mysql命令行批量插入100条数据命令
- user-scalable=no导致部分手机缩放失效
- 利用反射实现JavaBean的自动赋值(六)
- windows server 下的Tomcat配置
- 垃圾收集器与内存分配策略(二)
- 程序或-内存区域分配(五个段)--终于搞明白了
- [复现笔记]基于双目视觉和三维重构的三维书写系统
- Android shape 绘制图形笔记
- 【已解决】运行Eclipse出错:Failed to load the JNI shared library
- UART学习笔记一:如何判断一帧数据收完
- OpenMPI多结点安装