使用jbc查询数据封装成对象的工具类
Posted codlover
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jbc查询数据封装成对象的工具类相关的知识,希望对你有一定的参考价值。
package com.briup.jdbctest; import java.lang.reflect.Field; import java.math.BigDecimal; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class JDBCUtils private static Connection conn = null; // 连接对象 private static String driver = "oracle.jdbc.driver.OracleDriver"; // jar包中的OracleDriver中的类 private static String url = "jdbc:oracle:thin:@//127.0.0.1:1521/orcl"; private static String username = "scott"; private static String password = "tiger"; private static PreparedStatement ps = null; private static ResultSet rs = null; public static Connection getConnection() try Class.forName(driver); conn = DriverManager.getConnection(url, username, password); catch (Exception e) // TODO Auto-generated catch block e.printStackTrace(); return conn; // 将表中的数据封装成所有对象 /** * * @param <T> 封装对象的泛型 * @param clazz * @param sql sql语句 * @param args 给预编译语句传参 * @return */ public static <T> List<T> queryToObj(Class<T> clazz, Connection conn, String sql, Object... args) try // 1. 获取结果集 ps = conn.prepareStatement(sql); for (int i = 1; i <= args.length; i++) ps.setObject(i, args[i - 1]); rs = ps.executeQuery(); // 2. 将查询的结果和字段名称获取 获取所有的字段 ResultSetMetaData metaData = rs.getMetaData(); // 用来保存对象的 ArrayList<T> cols = new ArrayList<>(); while (rs.next()) // 创建对象 T obj = clazz.newInstance(); for (int i = 1; i <= metaData.getColumnCount(); i++) // 通过反射获取对应的字段 Field filed = clazz.getDeclaredField(metaData.getColumnLabel(i).toLowerCase()); filed.setAccessible(true); Object value = rs.getObject(metaData.getColumnLabel(i)); // oralce的number 在java中的是BigDecimal if (value instanceof BigDecimal) value = ((BigDecimal) value).intValue(); filed.set(obj, value); cols.add(obj); return cols; catch (Exception e) e.printStackTrace(); finally Close(conn, ps, rs); return null; // 释放资源 private static void Close(Connection conn, PreparedStatement ps, ResultSet rs) if (conn != null) try conn.close(); catch (SQLException e) // TODO Auto-generated catch block e.printStackTrace(); if (ps != null) try ps.close(); catch (SQLException e) // TODO Auto-generated catch block e.printStackTrace(); if (rs != null) try rs.close(); catch (SQLException e) // TODO Auto-generated catch block e.printStackTrace(); public static void main(String[] args) Connection connection = getConnection(); String sql = "select * from stu where id=? or id=?"; List<Stu> list = queryToObj(Stu.class, connection, sql, 1, 2); for (Stu stu : list) System.out.println(stu);
以上是关于使用jbc查询数据封装成对象的工具类的主要内容,如果未能解决你的问题,请参考以下文章