`

动态将BEAN中的数据装到数据库

 
阅读更多

//将BEAN装到数据库中

public static void beanToResultset(Object databaseBean, java.sql.PreparedStatement stmt)
throws Exception {
stmtNo = 1;
try {

//得到类或接口的单个字段的信息,以及对它的动态访问权限

java.lang.reflect.Field[] declaredField = databaseBean.getClass().getDeclaredFields();

//将BEAN中的数据放到数据中

executeBeanToDB(declaredField , databaseBean , stmt);
declaredField = null;
java.lang.reflect.Field[] declaredSuperField = databaseBean.getClass().getSuperclass().getDeclaredFields();

//将BEAN中的数据放到数据中

executeBeanToDB(declaredSuperField , databaseBean , stmt);
declaredSuperField = null;
} catch (Exception e) {
throw e;
}
}

private static void executeBeanToDB(java.lang.reflect.Field[] declaredField , Object databaseBean, java.sql.PreparedStatement stmt) throws Exception{
String fieldType = null;
String fieldName = null;
for (int i = 0; i < declaredField.length; ++i) {

//判断信息中是否有方法

if (declaredField[i].getType().getName().equals("java.lang.Class"))
continue;

//得到方法类型

fieldType = declaredField[i].getType().getName();

//得到方法名

fieldName = declaredField[i].getName();

//将BEAN中的数据装到数据库中

beanValueToResultset(
fieldType,
getGetterMethodValue(fieldType,getGetterMethodName(fieldName),databaseBean ),
stmt
);
}
}

//运行GET方法

public static String getGetterMethodValue(String fieldType , String methodName ,Object databaseBean) throws Exception{
try {
Class[] types = {};
Object[] args = {};
java.lang.reflect.Method m = databaseBean.getClass().getMethod(methodName, types);
return (String)m.invoke(databaseBean, args);
} catch (Exception e) {
logger.error(displayExceptionMessage("HibernateBean","getGetterMethodValue",e.getMessage()));
throw e;
}
}

//将GET方法得到的值装到数据库中

private static void beanValueToResultset(String fieldType, String fieldValue, java.sql.PreparedStatement stmt)throws java.sql.SQLException {
if (fieldType.equals("java.lang.String")) {
stmt.setString(stmtNo,fieldValue);
++stmtNo;
} else if (fieldType.equals("int")) {
stmt.setInt(stmtNo,Integer.parseInt(fieldValue));
++stmtNo;
} else if (fieldType.equals("float")) {
stmt.setFloat(stmtNo,Float.parseFloat(fieldValue));
++stmtNo;
} else {
stmt.setString(stmtNo,fieldValue);
++stmtNo;
}
}

//生成GET方法

private static String getGetterMethodName(String fieldName) {
//return "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1, fieldName.length());
return "get" + fieldName;
}

分享到:
评论

相关推荐

    简单的JSP+JAVABEAN+ACCESS留言簿

    在将文件放入tomcat/webapp下面后,用浏览器打开看时会出错,原因是tomcat默认装在'program files'下面,于是得到的路径含有空格。 经过修改连接函数,现在已经可以正常显示。 如果又兴趣学习jsp的朋友可以下载看看...

    J2EE中文版指南 CHM格式 带全文检索

    将WAR文件加入到EAR文件中 150 增加一个Web组件到WAR文件中 150 配置Web客户 151 应用级配置 151 WAR级的配置 151 组件及配置 151 部署网络客户 152 运行网络客户 152 更新网络客户 152 国际化网络客户 152 第10章 ...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。  7.SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。  SQL Server 2000与以前版本相比较,又具有以下新特性...

    超级有影响力霸气的Java面试题大全文档

    超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。...只要数据库中的数据存在,Entity beans就一直存活。而不是...

    java 面试题 总结

    SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。 对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上...

    java-web_学生管理系统(完成实现三成架构)

    5,在前台页面success.jsp中添加某数据表的增删改查操作(按钮或超链接) 6,从前台页面开始向后进行调用,jsp--&gt;sertlet--&gt;service--&gt;daoimpl 。 7,依次实现各层方法。 主要用的三层架构实现: (1)表示层(USL,即...

    fis-rds-api-service:围绕RDS Postgres RDBMS的RESTful包装器

    使用内存中的Apache Derby关系数据库作为数据源,该用例可以轻松更新以连接到任何关系数据库(请参阅camel-context.xml中Oracle的注释bean钩子)。 此外,使用Swagger记录了REST API。 该项目利用了侦听端口8080上...

    Spring中文帮助文档

    使用@ModelAttribute提供一个从模型到数据的链接 13.12.6. 使用@SessionAttributes指定存储在会话中的属性 13.12.7. 自定义WebDataBinder初始化 13.13. 更多资源 14. 集成视图技术 14.1. 简介 14.2. JSP和...

    Spring-Reference_zh_CN(Spring中文参考手册)

    1. 简介 1.1. 概览 1.2. 使用场景 2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 ... 将 Spring Beans 注入到 Tapestry ...

    利用反射自动转换类型

    自己编写的公共方法. 说明:从数据库取出来数据,封装到list集合(list里面装的当然是bean).然后将这个list传入此方法,自动转换相应的bean,并显示出相应数据.

    J2EE应用开发详解

    282 第16章 数据库技术和JDBC技术 283 16.1 关系数据库和SQL 283 16.2 关系数据库的工作环境 284 16.3 基于JDBC的数据访问技术 285 16.3.1 JDBC概述 285 16.3.2 数据库驱动程序 287 16.3.3 使用JDBC查询数据库 291 ...

    Java EE常用框架.xmind

    由于我们使用工作流的时候是有很多数据产生的,因此Activiti是将数据保存到数据库表中的。这些数据库表由Actitviti创建,由Activiti维护。 部署完的工作流是需要手动去执行该工作流的。 根据由谁处理当前...

    Java核心技术II(第8版)

    4.3.5 连接到数据库 4.4 执行SQL语句 4.4.1 管理连接、语句和结果集 4.4.2 分析SQL异常 4.4.3 组装数据库 4.5 执行查询操作 4.5.1 预备语句 4.5.2 读取和写出LOB 4.5.3 SQL转义 4.5.4 多结果集 4.5.5 获取自动生成键...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    这个项目包括5个实体,这5个实体之间具有复杂的关联关系,而且业务逻辑也相对复杂,希望让读者理论联系实际,真正将jsf+ejb 3+jpa整合真正运用到实际开发中。该案例采用目前最流行、最规范的java ee架构,整个应用...

    structs程序设计从入门到精通word文档

    13.1 使用Struts Bean标签保存与传输数据小实例 15 第14章 Struts Logic标签库 15 14.1 如何使用Logic标签进行基于值的条件显示 15 14.1 如何使用Logic标签进行字符串匹配 15 14.1 如何使用Logic标签来检测值是否...

    Spring API

    使用@ModelAttribute提供一个从模型到数据的链接 13.12.6. 使用@SessionAttributes指定存储在会话中的属性 13.12.7. 自定义WebDataBinder初始化 13.13. 更多资源 14. 集成视图技术 14.1. 简介 14.2. JSP和...

    基于maven项目的SSM框架与layu前端框架的代码

    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。可以这么理解,MyBatis是一个用来帮你管理数据增删改查的框架。

    Javashop开发规范V2.2

    在实合格bean和数据库对照过程中,数据库机制需要识别主键,所以需要我们在主键的对应属性的Geter方法中加上@PrimaryKeyFiled注解,如: private Integer brand_id @PrimaryKeyField public Integer getBrand_id() ...

Global site tag (gtag.js) - Google Analytics