import java.lang.reflect.Field; import java.lang.reflect.Method; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;
public class Test {
static String driverName = "oracle.jdbc.driver.OracleDriver"; static String url = "jdbc:oracle:thin:@172.22.246.26:1521:orcl"; static String user = "java1"; static String pass = "java1";
static { try { Class.forName(driverName); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
public static void main(String[] args) { // 定义存储多个对象的集合 List<Object> list = new ArrayList<Object>(); Test t = new Test(); Class<?> demo = null; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; Bonus_m bonus = null; conn = t.getConnection();
String sql = "SELECT * FROM bonus_m"; try { pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery();
// 获取表的元数据 ResultSetMetaData rsmd = rs.getMetaData();
// 获取表中的列数 int count = rsmd.getColumnCount();
demo = Class.forName("com.iflytek.test.Bonus_m");
// 获取属性的数组 Field[] fields = demo.getDeclaredFields();
while (rs.next()) { bonus = (Bonus_m) demo.newInstance(); for (int i = 1; i <= count; i++) { String colunmName = rsmd.getColumnName(i); Object value = rs.getObject(i);
for (int j = 0; j < fields.length; j++) { if (fields[j].getName().equalsIgnoreCase(colunmName)) { t.setter(bonus, fields[j].getName(), value, fields[j].getType()); break; } } } list.add(bonus); } t.getter(list, fields);
} catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
// 获取数据库连接 public Connection getConnection() { Connection conn = null; try { conn = DriverManager.getConnection(url, user, pass); } catch (SQLException e) { e.printStackTrace(); } return conn; }
/* * @param obj 待操作的对象 * * @param att 待操作的属性 * * @param value 待设置的值 * * @param type 属性的类型 */ public void setter(Object obj, String att, Object value, Class<?> type) { Test t = new Test(); String filed = t.firstChar2Upper(att).toString(); try { Method method = obj.getClass().getMethod("set" + filed, type); method.invoke(obj, value); } catch (Exception e) { e.printStackTrace(); } }
public void getter(List<Object> list, Field[] fields) {
/* * Bonus_m{"ename":"张三", "":"", "":"", "":""} */ if (list != null) { for (Object obj : list) { Class<?> cla = obj.getClass(); StringBuilder builder = new StringBuilder(); builder.append(cla.getSimpleName()).append("{");
for (Field field : fields) { String fieldName = field.getName();
try { Object value = field.get(obj);
builder.append("\"").append(fieldName).append("\":"); builder.append("\"").append(value).append("\""); builder.append(","); } catch (Exception e) { e.printStackTrace(); } }
builder.deleteCharAt(builder.length() - 1); builder.append("}"); System.out.println(builder); } } }
/* * 修改字符串,将字符串的首字母变成大写 */ public StringBuffer firstChar2Upper(String str) { StringBuffer strBuff = new StringBuffer(); strBuff.append(str.substring(0, 1).toUpperCase()).append(str.substring(1)); return strBuff; } }
import java.math.BigDecimal;
public class Bonus_m { private String ename; private String job; private BigDecimal sal; private BigDecimal comm;
public String getEname() { return ename; }
public void setEname(String ename) { this.ename = ename; }
public String getJob() { return job; }
public void setJob(String job) { this.job = job; }
public BigDecimal getSal() { return sal; }
public void setSal(BigDecimal sal) { this.sal = sal; }
public BigDecimal getComm() { return comm; }
public void setComm(BigDecimal comm) { this.comm = comm; }
}