| MySQL | JDK |
| tinyint(1) | boolean |
| int unsigined | long |
| datetime | java.sql.Timestamp |
| varchar | String |
/**
* Using reflection to storage the result from database into Bean class.
*
*/
public static List<Object> resultSetToList(ResultSet rs, Class<?> cls) {
Method[] methods = cls.getDeclaredMethods();
int methodLength = methods.length;
int index;
Map<String, Integer> map = new HashMap<String, Integer>();
// record all methods name in a HashMap, for quickly locate.
for (index = 0; index < methodLength; index++) {
map.put(methods[index].getName().toLowerCase(), index);
}
ResultSetMetaData meta = null;
Object obj = null;
List<Object> list = new ArrayList<Object>();
try {
meta = rs.getMetaData();
int colCount = meta.getColumnCount();
while (rs.next()) {
obj = cls.newInstance();
for (int i = 1; i <= colCount; i++) {
String colName = meta.getColumnName(i);
String setMethodName = "set" + colName;
// System.out.println(setMethodName);
int j = map.get(setMethodName.toLowerCase()); //get index of method array
setMethodName = methods[j].getName();
Object value = rs.getObject(colName);
if(value == null){
continue;
}
try {
Method setMethod = obj.getClass().getMethod(setMethodName, value.getClass());
setMethod.invoke(obj, value);
} catch (Exception e) {
System.out.println(setMethodName + " exception");
e.printStackTrace();
}
}
list.add(obj);
}
} catch (InstantiationException | IllegalAccessException | SQLException e) {
e.printStackTrace();
}
return list;
} mysql> describe cake; +--------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------------------+------+-----+---------+-------+ | name | varchar(20) | NO | PRI | NULL | | | serialNumber | int(10) unsigned | YES | | NULL | | | buildDate | datetime | YES | | NULL | | | isSweet | tinyint(1) unsigned | YES | | NULL | | +--------------+---------------------+------+-----+---------+-------+
mysql> select * from cake; +--------+--------------+---------------------+---------+ | name | serialNumber | buildDate | isSweet | +--------+--------------+---------------------+---------+ | Danisa | 2021344 | 2013-11-19 10:20:00 | 1 | | Orion | 2004720 | 2014-06-29 22:00:00 | 0 | +--------+--------------+---------------------+---------+
private String name; private long serialNumber; private Timestamp buildDate; private boolean isSweet;
public void setSerialNumber(Long /*long*/ serialNumber) { //Type was java.lang.Long but not 'long'.
this. serialNumber = serialNumber;
} public void /*setSweet*/setIsSweet( /*boolean*/Boolean isSweet) { // Type was java.lang.Boolean but not boolean
this. isSweet = isSweet;
}JDK+JDBC+MySQL实例及注意事项,布布扣,bubuko.com
原文:http://blog.csdn.net/dds_xyz/article/details/35872791