在Struts--hibernate开发框架中,实现formbean与hibernate pojo的自动转换
来源:互联网 发布:魔方软件 编辑:程序博客网 时间:2024/05/22 17:46
在我们实际项目开发过程中,经常有大量的对单表的基本维护。在做这一部分工作时,最耗费我们宝贵时间的就是formbean与hibernate pojo之间的转换问题了。经过一天的努力,初见成效。贴出来,让大家拍拍砖。
源代码:
import java.lang.reflect.Field;
import java.lang.reflect.Method;
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author 赵志宽
* @version 1.0
*/
public class DataForm {
* VOToForm
*
* @param vo Object
* @param form Object
* @throws ClassNotFoundException
*/
public static void VOToForm(Object vo, Object form) throws
ClassNotFoundException {
Field[] formFields;
Class beanVo = vo.getClass();
voFileds = beanVo.getFields();
Class formData = form.getClass();
formFields = formData.getFields();
try {
DataTrants(voFileds, formFields, vo, form, "0");
} catch (Exception ex) {
System.out.println("转换失败" + ex.getMessage());
}
}
* FormToVO
*
* @param vo Object
* @param form Object
*/
public static void FormToVO(Object vo, Object form) {
Field[] voFileds;
Field[] formFields;
Class beanVo = vo.getClass();
voFileds = beanVo.getFields();
Class formData = form.getClass();
formFields = formData.getFields();
DataTrants(voFileds, formFields, vo, form, "1");
System.out.println("转换失败" + ex.getMessage());
}
* DataTrants
* flag = "0" 从VO到FORM flag = "1" 从form到VO
* @param voFileds Field[]
* @param formFields Field[]
*/
public static void DataTrants(Field[] voFileds, Field[] formFields,
Object vo,
Object form, String flag) throws
Exception {
String voFieldName = "";
String formFieldName = "";
Method m = null;
Method v = null;
String value = "";
Class param[] = new Class[1];
Class param1[] = new Class[0];
Object[] paramValue = new Object[1];
if (flag.equals("0")) {
for (int i = 0; i < voFileds.length; i++) {
voFieldName = voFileds[i].getName();
for (int j = 0; j < formFields.length; j++) {
formFieldName = formFields[j].getName();
if (voFieldName.equals(formFieldName.toLowerCase())) {
v = vo.getClass().getMethod(getMethodName("get",
voFieldName),
param1);
value = String.valueOf(v.invoke(vo, param1));
param[0] = formFields[j].getType();
m = form.getClass().getMethod("set" +
voFieldName.toUpperCase(), param);
paramValue[0] = value;
if (String.valueOf(param[0].getName()).equals(
"java.lang.Integer")) {
paramValue[0] = new Integer(value);
}
m.invoke(form, paramValue);
}
}
}
} else {
if (flag.equals("1")) {
for (int i = 0; i < formFields.length; i++) {
formFieldName = formFields[i].getName();
v = form.getClass().getMethod("get" + formFieldName, param1);
value = String.valueOf(v.invoke(form, param1));
param[0] = vo.getClass().getField(formFieldName.toLowerCase()).
getType();
m = vo.getClass().getMethod(getMethodName("set",
formFieldName), param);
paramValue[0] = value;
if (String.valueOf(param[0].getName()).equals(
"java.lang.Integer")) {
paramValue[0] = new Integer(value);
}
if (String.valueOf(param[0].getName()).equals(
"java.util.Date")) {
int year = new Integer(value.substring(0, 2)).intValue();
int month = new Integer(value.substring(4, 6)).intValue();
int days = new Integer(value.substring(8, 10)).intValue();
paramValue[0] = new java.util.Date(year, month, days);
}
m.invoke(vo, paramValue);
}
} else {
throw new Exception("数据转换标志不对");
}
}
* getMethodName
*
* @param flag String
* @param columName String
* @return String
*/
private static String getMethodName(String flag, String columName) {
String pre = columName.substring(0, 1).toUpperCase();
String next = columName.substring(1, columName.length()).toLowerCase();
StringBuffer methodName = new StringBuffer();
methodName.append(flag);
methodName.append(pre);
methodName.append(next);
return new String(methodName);
- 在Struts--hibernate开发框架中,实现formbean与hibernate pojo的自动转换
- struts+spring+hibernate架构中数据对象(PO,POJO,FormBean)的使用心得
- 在Struts+Spring+hibernate中,将FormBean与EntityBean进行整合
- 在Struts+Spring+hibernate中,将FormBean与EntityBean进行整合(续)
- web开发:通用持久类代替hibernate的持久类、通用动态formBean类代替struts的formBean类
- 练手在eclipse中搭建spring+struts+hibernate开发框架
- FormBean 与 POJO 的集成
- Hibernate中POJO与PO的释疑
- Hibernate 与 Struts 框架
- hibernate中pojo的含义
- Hibernate 中Pojo类的实现要注意类型!
- Struts+Hibernate开发实践 分页的实现
- Struts+Hibernate开发实践 分页的实现
- Struts+Hibernate开发实践 分页的实现
- Struts+Hibernate开发实践 分页的实现
- Struts+Hibernate开发实践 分页的实现
- 在hibernate中实现oracle的自动增长
- 在hibernate中实现oracle的自动增长(转)
- 将一个控件和自定义的类关联
- [ASP.NET2.0]限制web用户对指定目录下的特定类型文件的访问
- 网友大宝(sodme)的来信
- 一个关于Unicode字符编码的奇怪问题
- Colored Static Controls
- 在Struts--hibernate开发框架中,实现formbean与hibernate pojo的自动转换
- 通过 SQL Server 2005 索引视图提高性能
- .net2.0 Seesion不到1分钟就丢失的问题
- .net2.0 Seesion不到1分钟就丢失的问题
- asp.net导出Excel/Csv格式数据方案
- php5中解析xml
- asp.net 上传大文件解决方案
- C++面试题集
- 控件FreeTextBox介绍