import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.util.HashMap; import java.util.Map; import org.apache.commons.beanutils.BeanUtils; import com.heima.jdbc.domain.Emp; import com.heima.jdbc.utils.JdbcUtil; public class MetaDataDemo { public static void main(String[] args) throws Exception { Connection conn = JdbcUtil.getConnection() ; // 获取连接对象 String sql = "select * from emp" ; // 定义sql模板 PreparedStatement ps = conn.prepareStatement(sql) ; // 获取PreparedStatement对象 ResultSetMetaData metaData = ps.getMetaData() ; // 获取结果集元数据 int columnCount = metaData.getColumnCount() ; // 获取列的总数 ResultSet rs = ps.executeQuery() ; // 执行sql while(rs.next()) { Map<String , Object> map = new HashMap<String , Object>() ; // 定义一个Map集合对象,用这个对象存储用户的数据 , 一条数据就是一个Map集合 Emp emp = new Emp() ; // 创建Emp对象 , 用这个对象来封装数据 for(int x = 1 ; x <= columnCount ; x++) { // 遍历列 String columnName = metaData.getColumnName(x) ; // 获取列名称 Object obj = rs.getObject(x) ; // 获取列对应的值 if("empno".equals(columnName)) { // 把列的名称作为键 , 值作为值存储到Map集合中 map.put("empNo", obj) ; }else { map.put(columnName, obj) ; } } BeanUtils.populate(emp, map) ; // 使用BeanUtils封装数据 System.out.println(emp); // 打印对象 } } }
原文:http://www.cnblogs.com/loaderman/p/6415313.html