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); // 打印对象
}
}
}