用java代码连接数据库用反射动态给实体类的字段赋值然后在动态的拿值
下面是一个用Java代码连接数据库,并使用反射动态给实体类的字段赋值,然后动态获取值的示例:
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DatabaseExample {
public static void main(String[] args) {
// 连接数据库
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, username, password)) {
// 执行SQL查询
String sql = "SELECT * FROM mytable";
try (PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery()) {
// 获取实体类的Class对象
Class<?> entityClass = Entity.class;
// 遍历查询结果
while (resultSet.next()) {
// 创建实体类对象
Object entity = entityClass.getDeclaredConstructor().newInstance();
// 获取实体类的所有字段
Field[] fields = entityClass.getDeclaredFields();
// 遍历字段并赋值
for (Field field : fields) {
// 设置字段可访问,以便赋值
field.setAccessible(true);
// 获取字段名
String fieldName = field.getName();
// 根据字段名从查询结果中获取对应的值
Object value = resultSet.getObject(fieldName);
// 给实体类的字段赋值
field.set(entity, value);
}
// 打印实体类的字段值
for (Field field : fields) {
// 设置字段可访问,以便获取值
field.setAccessible(true);
// 获取字段名
String fieldName = field.getName();
// 获取实体类的字段值
Object value = field.get(entity);
System.out.println(fieldName + ": " + value);
}
System.out.println();
}
}
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
// 示例实体类
public static class Entity {
private int id;
private String name;
private int age;
public Entity() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
}
请将示例中的数据库连接信息(url、username和password)替换为您自己的数据库连接信息,并根据您的实际需求调整示例中的实体类和SQL查询语句
原文地址: http://www.cveoy.top/t/topic/ivto 著作权归作者所有。请勿转载和采集!