我测试了下commons-beanUtil,结果出现如下错误:21 Exception in thread "main" java.lang.IllegalArgumentException: bm_URL
at org.apache.commons.beanutils.ResultSetIterator.get(ResultSetIterator.java:116)
at com.ljj.commons.dbutil.BeanUtilsExample3.main(BeanUtilsExample3.java:24)
ljh
感觉到很奇怪,我的数据库mysql:表中字段username,bm_URL都为varchar类型,注释掉System.out.println(bean.get("bm_URL")+"\t");能正常输出结果,类型一致为什么出现这种错误了,请高手指教。
package com.ljj.commons.dbutil;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.ResultSetDynaClass;public class BeanUtilsExample3 {
    public static void main(String args[]) throws Exception {
        Connection conn = getConnection();
        PreparedStatement ps = conn
                .prepareStatement("select id,username,bm_URL from book order by id desc");
        ResultSet rs = ps.executeQuery();        ResultSetDynaClass rsdc = new ResultSetDynaClass(rs);//重点,二次封装,对连接对象有依赖
        Iterator itr = rsdc.iterator();
        while (itr.hasNext()) {
            DynaBean bean = (DynaBean) itr.next();
            System.out.print(bean.get("id") + "\t");
            System.out.print(bean.get("username") + "\t");
           System.out.println(bean.get("bm_URL")+"\t");
            System.out.println();
        }
        conn.close();
    }    private static Connection getConnection() {
        String url = "jdbc:mysql://localhost:3306/books";
        String username = "root";
        String password = "123456";
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url, username, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
}