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;
}
}