首页 > 代码库 > 是用JDBC从数据库中获取数据并以java对象返回
是用JDBC从数据库中获取数据并以java对象返回
/** * * @param c * for example Person.class * @param primaryKeys * primaryKeys为主键,参数顺序和表中保持一致 如果id, name 为主键 类名为Person 则 getEntity(Person.class,1,"name") * @return */ public static Object getEntity(Class c, Object... primaryKeys) { PreparedStatement ps = null; ResultSet rs = null; DatabaseMetaData dmd = null; Object obj = null;// 要返回的对象 String tableName = c.getSimpleName().toLowerCase();// person 表的名字 List primaryKeyNameList = new ArrayList(); Field[] fields = c.getFields();// 获取所有的属性 StringBuilder sql = new StringBuilder("select * from " + tableName + " where "); try { obj = c.newInstance(); dmd = getConnection().getMetaData(); rs = dmd.getPrimaryKeys(null, null, tableName); while (rs.next()) { sql.append(rs.getObject(4) + "=?"); sql.append(" and "); primaryKeyNameList.add(rs.getObject(4));// 将从表中获取的 主键字段存到 list中, 主键位于表中第几列=rs.getString(5) } sql.delete(sql.length() - 4, sql.length()); ps = (PreparedStatement) getConnection().prepareStatement( sql.toString()); for (int l = 0; l < primaryKeyNameList.size(); l++) { ps.setObject(l + 1, primaryKeys[l]); } rs = ps.executeQuery(); System.out.println(ps.toString().split(":")[1]); if (rs.next()) { for (int k = 0; k < fields.length; k++) { fields[k].set(obj, rs.getObject(k + 1)); } } rs.close(); ps.close(); rs=null; ps=null; } catch (Exception e) { e.printStackTrace(); } finally { } return obj; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。