Java实现数据库ResultSet的数据转换为Object对象

使用原因
我们在进行数据库查询的时候,查询出来的结果是ResultSet对象,我们需要一行一行的遍历,用Object.setXxxx(ressultSet.getString(“xxx”))。如果表的字段比较多的话,每次查询都这样写工作量就很多拉,无疑是浪费时间和精力。
解决思路
我们可以让查询的RestultSet对象一行数据和数据库表对象的实体类Object一起传入一个类中进行“加工”,把ResultSet中的值通过Object.setXxx方法写入Object对象中。
实现过程
一、创建数据库表
在数据库中创建一个Student表作测试
在这里插入图片描述

二、创建实体类

public class Student {
	
	private String s_sno;
	

	private String s_name;
	
	private String s_age;

	public String getS_sno() {
		return s_sno;
	}

	public void setS_sno(String s_sno) {
		this.s_sno = s_sno;
	}

	public String getS_name() {
		return s_name;
	}

	public void setS_name(String s_name) {
		this.s_name = s_name;
	}

	public String getS_age() {
		return s_age;
	}

	public void setS_age(String s_age) {
		this.s_age = s_age;
	}
	
	
}

三、创建加工类(主要的是toObject方法用于ResultSet转换为Object)

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

public class DButil {

	public static void toObject(ResultSet resultSet , Object object) {
		
		Class c = object.getClass(); 
		
		Map map=new HashMap<>();
		
		Field[] fields=c.getDeclaredFields();//获取属性数组
		
		for(int i=0;i

四、测试类

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class test {
	
	public static void main(String[] args) {
		//("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/ddserver", "root", "");
		
		String driver="com.mysql.jdbc.Driver";
		
		String url="jdbc:mysql://localhost/student";
		
		String user="root";
		
		String password="";
		
		String sql = "select * from students";
		
		Student student = null;
		
		Connection connection = DButil.getConnection(driver, url, user, password);
		
		try {
			PreparedStatement statement = connection.prepareStatement(sql);
			
			ResultSet resultSet = statement.executeQuery();
			
			while(resultSet.next()) {
				
				student = new Student();
				
				DButil.toObject(resultSet, student);
				
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		if(student !=null) {
			System.out.println(student.toString());
		}
		
	}

}

五、测试结果

Java实现数据库ResultSet的数据转换为Object对象_第1张图片
六、注意事项
注意:实体类的属性必须和数据库里面的字段对应,属性的类型也要和数据库对应。属性类型最好使用对象类型不要使用基本数据类型,比如int写成Integer、double写成Double。实体类bi要有get和set方法。

你可能感兴趣的:(Java,Java)