JDBC 封装ResultSet返回List

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenbetter1996/article/details/83017802
package top.cglzwz.Test1;

import java.sql.ResultSet;
import java.util.List;
import java.util.Map;

/**
 * 
 * ResultSet返回List
 * 
 * @author chgl16
 * @Date 2018.10.11
 *
 */

public interface ResultSetToListService {
	/**
	 * SELECT * FROM websites
	 * 查询所有记录,以List返回
	 * list对象的每一个元素都是一条记录
	 * 每条记录保存在Map<String, Object>里面,String类型指字段名字,Object对应字段值
	 * 
	 * @param rs
	 * @return List<Map<String, Object>>
	 */
	public List<Map<String, Object>> selectAll(ResultSet rs);
}
package top.cglzwz.Test1;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 * 
 * ResultSet返回List
 * 
 * @author chgl16
 * @Date 2018.10.11
 *
 */

public class ResultSetToListServiceImp implements ResultSetToListService {
	
	/**
	 * SELECT * FROM websites
	 * 查询所有记录,以List返回
	 * list对象的每一个元素都是一条记录
	 * 每条记录保存在Map<String, Object>里面,String类型指字段名字,Object对应字段值
	 * 
	 * @param rs
	 * @return List<Map<String, Object>>
	 */
	public List<Map<String, Object>> selectAll(ResultSet rs) {
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		try {
			// 获取结果集结构(元素据)
			ResultSetMetaData rmd = rs.getMetaData();
			// 获取字段数(即每条记录有多少个字段)
			int columnCount = rmd.getColumnCount();
			while (rs.next()) {
				// 保存记录中的每个<字段名-字段值>
				Map<String, Object> rowData = new HashMap<String, Object>();
				for (int i = 1; i <= columnCount; ++i) {
					// <字段名-字段值>
					rowData.put(rmd.getColumnName(i), rs.getObject(i));
				}
				// 获取到了一条记录,放入list
				list.add(rowData);
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return list;
	}
}
package top.cglzwz.Test1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class App1 {
	public static void main(String[] args) throws Exception {
		Connection cnn = null;
		Statement stm = null;
		ResultSet rs = null;
		String sql = " SELECT * FROM websites";
		
		Class.forName("com.mysql.cj.jdbc.Driver");//加载数据库驱动
		cnn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test1?serverTimezone=UTC","root","123");
		stm = cnn.createStatement();
		rs = stm.executeQuery(sql);
		
		ResultSetToListService rstls = new ResultSetToListServiceImp();
		List<Map<String, Object>> list = rstls.selectAll(rs);
		
		// 打印list看看
		for (Map<String, Object> map : list) {
			// 每一条记录被包含在Map里面,迭代器打印
			Iterator it = map.keySet().iterator();
			while (it.hasNext()) {
				// key就是字段名, value是字段值
				String key = (String) it.next();
				System.out.print(String.format("%1$10s",map.get(key).toString()) + " | ");
				}
				System.out.println("\n----------------------------------------------------------");
			}
	}
}
       USA |     Google |          1 |          1 | https://www.google.cm/ | 
----------------------------------------------------------
        CN |       淘宝 |         13 |          2 | https://www.taobao.com/ | 
----------------------------------------------------------
       USA |    菜鸟教程 |       1000 |          3 | http://www.runoob.com | 
----------------------------------------------------------
        CN |       微博 |         20 |          4 | http://weibo.com/ | 
----------------------------------------------------------
       USA |   Facebook |          3 |          5 | https://www.facebook.com/ | 
----------------------------------------------------------
        CN |    波波宇宙 |         13 |          7 |    bobo.io | 
----------------------------------------------------------
        CN |    波波zwz |          13 |         10 |    bobo.io | 
----------------------------------------------------------

猜你喜欢

转载自blog.csdn.net/chenbetter1996/article/details/83017802