package com.atguigu.statement;
import com.atguigu.bean.Customer;
import com.atguigu2.util.JDBCUtils;
import org.junit.jupiter.api.Test;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.sql.*;
import java.util.ArrayList;
public class PreparedStatementQueryTest {
@Test
public void test(){
String sql ="select name from customers where id = ?";
ArrayList<Customer> arrayList =null;
try {
arrayList = research(Customer.class, sql, 1);
} catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println(arrayList);
}
}
//泛型方法
public <T> ArrayList<T> research(Class<T> clazz, String sql, Object...args){
ArrayList<T> a = new ArrayList<>();
Connection con = JDBCUtils.getConnection();
PreparedStatement pr=null;
try {
pr = con.prepareStatement(sql);
for(int i=0;i<args.length;++i){
pr.setObject(i+1,args[i]);
}
ResultSet resultSet = pr.executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
int count= metaData.getColumnCount();
while(resultSet.next()){
Constructor<T> dc= clazz.getDeclaredConstructor();
dc.setAccessible(true);
T t = dc.newInstance();
for(int i=0;i<count;++i){
String column = metaData.getColumnLabel(i+1);
Object columnValue = resultSet.getObject(i+1);
Field field = t.getClass().getDeclaredField(column);
field.setAccessible(true);
field.set(t,columnValue);
}
a.add(t);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pr.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
JDBCUtils.CloseConnect_Statement(con,pr);
return a;
}
}
}
java 实现mysql通用的不同表查询
最新推荐文章于 2022-12-05 15:00:00 发布