private static long _InsertObject(POJO obj) { Map<String, Object> pojo_bean = obj.ListInsertableFields(); String[] fields = pojo_bean.keySet().toArray(new String[pojo_bean.size()]); StringBuilder sql = new StringBuilder("INSERT INTO "); sql.append(obj.TableName()); sql.append('('); for (int i = 0; i < fields.length; i++) { if (i > 0) sql.append(','); sql.append(fields[i]); } sql.append(") VALUES("); for (int i = 0; i < fields.length; i++) { if (i > 0) sql.append(','); sql.append('?'); } sql.append(')'); PreparedStatement ps = null; ResultSet rs = null; try { ps = QueryHelper.getConnection() .prepareStatement(sql.toString(), PreparedStatement.RETURN_GENERATED_KEYS); for (int i = 0; i < fields.length; i++) { ps.setObject(i + 1, pojo_bean.get(fields[i])); } ps.executeUpdate(); rs = ps.getGeneratedKeys(); return rs.next() ? rs.getLong(1) : -1; } catch (SQLException e) { throw new DBException(e); } finally { DbUtils.closeQuietly(rs); DbUtils.closeQuietly(ps); sql = null; fields = null; pojo_bean = null; } }