利用反射实现JavaBean的自动赋值
最近开发公司的一个项目,因项目不是很大的项目,所以仅仅采用了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实例统一赋值,实现代码如下(已测试) import java.util.ArrayList; import java.util.Date; import java. ...
- 【转】利用反射快速给Model实体赋值
原文地址:http://blog.csdn.net/gxiangzi/article/details/8629064 试想这样一个业务需求:有一张合同表,由于合同涉及内容比较多所以此表比较庞大,大概有 ...
- 利用反射快速给Model实体赋值
试想这样一个业务需求:有一张合同表,由于合同涉及内容比较多所以此表比较庞大,大概有120多个字段.现在合同每一次变更时都需要对合同原始信息进行归档一次,版本号依次递增.那么我们就要新建一张合同历史表, ...
- 利用反射快速给Model实体赋值 使用 Task 简化异步编程 Guid ToString 格式知多少?(GUID 格式) Parallel Programming-实现并行操作的流水线(生产者、消费者) c# 无损高质量压缩图片代码 8种主要排序算法的C#实现 (一) 8种主要排序算法的C#实现 (二)
试想这样一个业务需求:有一张合同表,由于合同涉及内容比较多所以此表比较庞大,大概有120多个字段.现在合同每一次变更时都需要对合同原始信息进行归档一次,版本号依次递增.那么我们就要新建一张合同历史表, ...
- javabean对象自动赋值给另一个javabean对象
方法1:把JavaBean的from的值自动set给to,省略了自己从from中get然后再set给to import java.beans.BeanInfo;import java.beans.In ...
- C# 利用反射动态给模型Model 赋值
https://www.cnblogs.com/waitingfor/articles/2220669.html object ff = Activator.CreateInstance(tt, nu ...
- Java——利用反射机制将表单数据自动填充到JavaBean中
以一个案例介绍反射机制的一种常见的使用场景,以及具体实现. 1.本文案例 在编写Java Web应用程序时,使用表单提交数据是一个必不可少的环节,后台对于前台使用表单提交的数据需要能够从请求中解析,并 ...
- 利用反射把DataTable自动赋值到Model实体(自动识别数据类型)
转:http://www.cnblogs.com/the7stroke/archive/2012/04/22/2465591.html using System.Collections.Generic ...
- 反射学习2-通过反射机制动态获取属性的值模拟Struts的自动赋值
一.准备知识: Java反射机制 处理事务的JavaBean String的操作常用方法 二.模拟步骤 这里我们通过反射机制动态获取属性的值模拟Struts中的自动赋值. 1.首先创建 ...
随机推荐
- struts2和1的区别
先大致介绍下struts1和struts2 struts:过去最流行的web MVC组件,apache项目组的一个开源项目. struts2:现在非常流行的web MVC组件,是apache用stru ...
- 安卓 listView 优化
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_m ...
- PHP 笔记——操作MySQL数据库
1. 连接MySQL服务器 mysqli_connect :此函数是该函数的别名: mysqli::__construct() mysqli mysqli_connect ( [string se ...
- Navicat连接Docker中的mysql报错:client does not support authentication
1.进入mysql容器中 docker exec -it mysqltest(mysql容器名称) bash 2.进入mysql数据库 mysql -uroot -p 3.输入mysql密码 4.远程 ...
- java高并发程序设计模式-并发级别:阻塞、无障碍、无锁、无等待【转载】
一般认为并发可以分为阻塞与非阻塞,对于非阻塞可以进一步细分为无障碍.无锁.无等待,下面就对这几个并发级别,作一些简单的介绍. 1.阻塞 阻塞是指一个线程进入临界区后,其它线程就必须在临界区外等待,待进 ...
- ThinkPHP -- 基础入门
ThinkPHP文件结构说明: |——ThinkPHP.php 框架入口文件 |——Common 框架公共文件目录 |——Conf ...
- Matlab 矩阵【Mark】
一.矩阵的表示在MATLAB中创建矩阵有以下规则: a.矩阵元素必须在”[ ]”内: b.矩阵的同行元素之间用空格(或”,”)隔开: c.矩阵的行与行之间用”;”(或回车符)隔开: d.矩阵的元素可以 ...
- 如何监控ActiveMQ
如何监控ActiveMQ在ActiveMQ 4.x中你可以监控代理并查看使用了哪些目标,和连接一起的活动和订阅使用下面的工具进行查看: JMX和JMX控制台,如jConsole http://java ...
- gropf
http://blog.csdn.net/yetyongjin/article/details/7717464 带-pg编译程序$ gcc -pg -o test test.c先运行程序$ ./tes ...
- Java ClassLoader加载机制理解
今天看到了一篇介绍Java ClassLoader加载机器的文章, 才发觉一直来自己的肤浅, 好好地给补了一课, 不得不存档! 原文地址: http://www.blogjava.net/lhulcn ...