MetaData

本文介绍了一个Java程序示例,该程序演示了如何使用JDBC API从数据库查询中获取并处理结果集元数据。通过遍历元数据,程序能够动态地将查询结果映射到Java对象上。
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);                                                          // 打印对象                 

              }

       }

}

 

 

 

转载于:https://www.cnblogs.com/loaderman/p/6415313.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值