模拟DBUtils中的queryRunner.query()的反射机制的模拟
Posted zwgitOne123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟DBUtils中的queryRunner.query()的反射机制的模拟相关的知识,希望对你有一定的参考价值。
本文主要是讲述对于DBUtils中的queryRunner.query(connection,sql, new BeanListHandler<>(Admin.class))的模拟
代码结构:
DBUtilsReflection类:
/** * 将查询到的结果集,运用反射机制,创建对象,并存放如集合中 * resultSet->admin对象->list集合 */ public class DBUtilsReflection // 存储admin对象的集合 private ArrayList<Admin> adminList = new ArrayList<>(); private ResultSet resultSet = null; private PreparedStatement preStatement = null; // 利用反射机制,创建对象 public ArrayList<Admin> getAdminList(Connection connection,String sql,Class<?> aClass) try Constructor<?> constructor = aClass.getConstructor(Integer.class, String.class, String.class); ResultSet resultSet = getResultSet(connection, sql); while(resultSet.next()) int id = resultSet.getInt("id"); String name = resultSet.getString("name"); String pwd = resultSet.getString("pwd"); Admin admin = (Admin) constructor.newInstance(id, name, pwd); adminList.add(admin); catch (Exception e) e.printStackTrace(); finally JDBCUtilsByDruid.Close(resultSet,preStatement,connection); return adminList; // 得到它的结果集 public ResultSet getResultSet(Connection connection,String sql) try preStatement = connection.prepareStatement(sql); resultSet = preStatement.executeQuery(sql); catch (SQLException e) e.printStackTrace(); return resultSet;
DBUtilsReflectionTest类:
public class DBUtilsReflectionTest public static void main(String[] args) Connection connection = JDBCUtilsByDruid.getConnection(); String sql = "select * from admin"; DBUtilsReflection queryRunner = new DBUtilsReflection(); ArrayList<Admin> adminList = queryRunner.getAdminList(connection, sql, Admin.class); for (Admin admin : adminList) System.out.println(admin);
运行结果如下:
Adminid=3, name=\'Tom3\', pwd=\'123\' Adminid=5, name=\'Tom2\', pwd=\'123\' Adminid=6, name=\'Tom3\', pwd=\'123\' Adminid=8, name=\'Tom2\', pwd=\'123\' Adminid=9, name=\'Tom3\', pwd=\'123\' Adminid=11, name=\'zw\', pwd=\'123\' Adminid=12, name=\'郑为\', pwd=\'1234\' Adminid=13, name=\'郑威\', pwd=\'1234\' Adminid=14, name=\'郑为\', pwd=\'1234\' Adminid=15, name=\'郑威\', pwd=\'1234\' Process finished with exit code 0
以上是关于模拟DBUtils中的queryRunner.query()的反射机制的模拟的主要内容,如果未能解决你的问题,请参考以下文章
java mysql多次事务 模拟依据汇率转账,并存储转账信息 分层完成 dao层 service 层 client层 连接池使用C3p0 写入库使用DBUtils