67,513
社区成员
发帖
与我相关
我的任务
分享
package org.test;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import org.jdbc.domain.User;
import org.local.jdbc.JdbcUtilSingle;
public class ORMTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
User user = (User)getObject("select id as Id,name as Name,birthday as Birthday,money as Money from user where id=2", User.class);
System.out.println(user.getMoney());
System.out.println(user.getBirthday());
}
static Object getObject(String sql, Class clz){
Connection conn = null;
PreparedStatement psmt = null;
ResultSet rs = null;
try{
conn = JdbcUtilSingle.getInstance().getConnection();//数据库连接对象
psmt = conn.prepareStatement(sql);
rs = psmt.executeQuery();//查询结果集
ResultSetMetaData rsmd = rs.getMetaData();//查询结果元数据信息
int count = rsmd.getColumnCount();//查询结果列数
Object object = clz.newInstance();//通过反射类,实例化对象
Method[] methods = object.getClass().getDeclaredMethods();//返回类中所有方法,不包括继承的方法
if(rs.next()){
for(int i=1;i<=count;i++){
String methodName = "set"+rsmd.getColumnLabel(i);//组织为setter、getter型方法名称
for(Method m:methods){
if(methodName.equals(m.getName())){//若方法存在,则使用invoke调用该方法
m.invoke(object, rs.getObject(rsmd.getColumnLabel(i)));
}
}
}
}
return object;
}catch(Exception e){
System.out.println(e.getMessage());
}finally{
JdbcUtilSingle.free(rs,psmt,conn);
}
return null;
}
}
private static Connection conn = null;
public DBDao() {
conn = DBConnection.startConnection();
System.out.println("[LOG:connection start !!]");
}
public List<Object> getList(String sqlString) throws SQLException {
Statement st = conn.createStatement();
ResultSet rSet = st.executeQuery(sqlString);
ResultSetMetaData rData = rSet.getMetaData();
List<Object> list = new ArrayList<Object>();
while (rSet.next()) {
Map<Object,Object> obj = new HashMap<Object,Object>();
for (int i = 1; i <= rData.getColumnCount(); i++) {
obj.put(rData.getColumnName(i).toLowerCase(), rSet.getObject(i));
}
list.add(obj);
}
rSet.close();
DBConnection.close(conn, st, rSet);
System.out.println("[LOG:"+list.size()+" row in list]");
return list;
}
private static Connection conn = null;
public DBDao() {
conn = DBConnection.startConnection();
System.out.println("[LOG:connection start !!]");
}
public List<Object> getList(String sqlString) throws SQLException {
Statement st = conn.createStatement();
ResultSet rSet = st.executeQuery(sqlString);
ResultSetMetaData rData = rSet.getMetaData();
List<Object> list = new ArrayList<Object>();
while (rSet.next()) {
Map<Object,Object> obj = new HashMap<Object,Object>();
for (int i = 1; i <= rData.getColumnCount(); i++) {
obj.put(rData.getColumnName(i).toLowerCase(), rSet.getObject(i));
}
list.add(obj);
}
rSet.close();
DBConnection.close(conn, st, rSet);
System.out.println("[LOG:"+list.size()+" row in list]");
return list;
}