import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.sql.ResultSetMetaData; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; import javax.sql.rowset.CachedRowSet; public class BeanUtil { private static Logger LOG = Logger.getLogger(Logger.class.getName()); /** * 通过Bean对象获取查询语句 * * @param obj 对象 * @param tableName 表名 * @return SQL */ public static String getSQLOfSelect(Object obj, String tableName) { StringBuffer strBuffer = new StringBuffer("SELECT "); Class<? extends Object> objClass = obj.getClass(); Field fields[] = objClass.getDeclaredFields(); for (Field field : fields) { String methodName = field.getName().substring(0, 1).toUpperCase() + field.getName().substring(1); try { if (null != objClass.getMethod("get" + methodName)) { strBuffer.append(field.getName() + ","); } } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } strBuffer.delete(strBuffer.length() - 1, strBuffer.length()); strBuffer.append(" FROM " + tableName); LOG.info(strBuffer.toString()); return null; } /** * 通过bean对象获取插入时的SQL * * @param obj java对象 * @param tableName 表名 * @return SQL */ public static String getSQLOfInsert(Object obj, String tableName) { String strSQL = new String("INSERT INTO " + tableName + "(#COLS) VALUES (#VALS)"); Class<? extends Object> objClass = obj.getClass(); Field fields[] = objClass.getDeclaredFields(); StringBuffer cols = new StringBuffer(""); StringBuffer values = new StringBuffer(""); for (Field field : fields) { String methodName = "get" + field.getName().substring(0, 1).toUpperCase() + field.getName().substring(1); try { Method method = objClass.getMethod(methodName); Object o = method.invoke(obj); if (null != o) { cols.append(field.getName() + ","); if (o instanceof Integer || o instanceof Long || o instanceof Double) { values.append(o.toString() + ","); } else if (o instanceof String) { values.append("'" + o + "',"); } else if (o instanceof java.util.Date) { String datestr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((java.util.Date) o); values.append("'" + datestr + "',"); } else { values.append("'" + o.toString() + "',"); } } } catch (SecurityException e) { e.printStackTrace(); continue; } catch (NoSuchMethodException e) { e.printStackTrace(); continue; } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } if (cols.length() > 1 && values.length() > 1) { cols.delete(cols.length() - 1, cols.length()); values.delete(values.length() - 1, values.length()); strSQL = strSQL.replace("#COLS", cols).replace("#VALS", values); } else { LOG.warning("警告:空对象无法完成操作啊"); return null; } LOG.info(strSQL); return strSQL; } /** * 通过缓存结果集构造对象列表 * * @param clazz javaBean类 * @param crs 缓存结果集 * @return 对象列表 */ public static List<Object> getBeanFormCacheRowSet(Class<?> clazz, CachedRowSet crs) { List<Object> result = new ArrayList<Object>(); try { ResultSetMetaData md = crs.getMetaData(); int columnCount = md.getColumnCount(); Object o = null; while (crs.next()) { o = clazz.newInstance(); for (int i = 1; i <= columnCount; i++) { if (crs.getObject(i) == null) { continue; } md.getColumnType(i); String className = md.getColumnClassName(i); if ("java.sql.Timestamp".equals(className) || "java.sql.Date".equals(className)) { className = "java.util.Date"; } else if ("java.sql.Time".equals(className)) { className = "java.lang.String"; } else if ("java.lang.Byte".equals(className) || "java.lang.Short".equals(className)) { className = "java.lang.Integer"; } String methodName = "set" + md.getColumnName(i).substring(0, 1).toUpperCase() + md.getColumnName(i).substring(1); try { clazz.getMethod(methodName, Class.forName(className)).invoke(o, crs.getObject(i)); } catch (NoSuchMethodException e) { LOG.warning("特殊类型字段导致表字段与JavaBean属性不对应!没有找到参数类型是[" + className + "]的SETER方法:" + methodName); continue; } // System.out.println("className : " + className +" \tmethodName : " + methodName); } result.add(o); } } catch (Exception e) { e.printStackTrace(); } return result; } }
相关推荐
使用java反射机制封装javabean 项目当中使用的一个通用的方法
使用 Java 反射封装 JavaBean <br> 说明:这个程序在没有使用Hiberante时挺有用的 需要一个数据库查询语句 对应的JavaBean的全名(现在是Class,原来Class.getName()) 返回List包含多个JavaBean
根据mysql数据库自动生成对应的javabean,附带jdbc连接池工具类封装,支持Resultset转List javabean对象
很多公司里面不会用到H 所以只需要用SS不用h 相反来说用jdbc实现H的功能。
通过JSP、JavaBean、JDBC、Servlet、mysql 技术实现用户登录功能 通过JSP、JavaBean、JDBC、Servlet、mysql 技术实现用户登录功能 通过JSP、JavaBean、JDBC、Servlet、mysql 技术实现用户登录功能 通过JSP、JavaBean...
基于Jsp+Servlet+JavaBean+JDBC实现登录功能,简单实例
基于JSP+JAVABEAN+JDBC图书管理系统 摘 要 .........................................................1 目 录 .........................................................2 第一章 绪论 ..................
JSP+JavaBean+JDBC的综合运用,实现对管理员身份验证的功能,数据用的是数据源
NULL 博文链接:https://q343452855.iteye.com/blog/745558
5.Servlet + JSP +JavaBean + JDBC(DBUtils)+ mysql 6.数据库 create database day19; use day19; create table t_customer( id varchar(40) primary key, username varchar(20), gender varchar(10), ...
利用Javabean+JSP 实现文件的上传、显示、下载 实现文件上传功能和下载功能,显示文件列表和读取文件内容功能。
基于JSP+Servlet+JavaBean+JDBC+DAO的Web架构设计该系统,进一步了解并掌握如何对数据库进行操作,以及如何分析、设计一个应用系统。 需求要求: 该系统的基本需求是,系统要实现如下的基本管理功能: (1)用户分为...
JSP+JavaBean+Mysql+JDBC+Servle,完美实现登录注册功能,实现密码箱功能
java反射实现javabean转json实例代码.docx
实验一 JSP+Servlet+Javabean+jdbc-基于MVC模式的数据库的应用 实验二 JSF+JPA实现用户注册 实验三 struts+spring+hibernate框架访问数据库的应用 实验四 使用WebService和EJBean访问数据库的应用
通过jdbc驱动获得连接,将数据库操作封装在javabean中。
适合首次接触jdbc数据库连接的初学者 完全代码 可运行
整个站的全部数据逻辑运算完全有beans封装, 具有界面简洁、功能强大、操作方便等特点。 本站后台默认的用户名和密码为admin,admin javaWeb新闻发布管理系统(JSP+javabean+jdbc+mysql) javaWeb新闻发布管理系统...
学生管理系统 jsp jdbc javabean servlet