欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Java获取数据库各种查询结果_MySQL

程序员文章站 2022-06-09 12:38:46
...
在查询时候有时候要一条数据,有时候要的是一个结果集,然而有时候返回就是一个统计值,通过对ResultSet和ResultSetMetaData的变换得到各类所需的查询结果,因为没有利用连接池数据链接管理比较麻烦,所以谢了一个工具类,
package com.sky.connect;import java.lang.reflect.InvocationTargetException;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.commons.beanutils.BeanUtils;import com.mysql.jdbc.Connection;import com.mysql.jdbc.PreparedStatement;import com.mysql.jdbc.ResultSetMetaData;/** * DAO设计模式 *  * @author 潘琢文 *  */public class DAO {	/**	 * 更新数据库操作	 * 	 * @param sql	 * @param args	 */	public void update(String sql, Object... args) {		Connection connection = null;		PreparedStatement preparedStatement = null;		try {			connection = JDBCTools.getConnection();			preparedStatement = (PreparedStatement) connection					.prepareStatement(sql);			for (int i = 0; i  T get(Class clazz, String sql, Object... args) {		T entity = null;		Connection connection = null;		PreparedStatement preparedStatement = null;		ResultSet result = null;		try {			connection = JDBCTools.getConnection();			preparedStatement = (PreparedStatement) connection					.prepareStatement(sql);			for (int i = 0; i  map = new HashMap();			ResultSetMetaData rsmd = (ResultSetMetaData) result.getMetaData();			if (result.next()) {				for (int i = 0; i  0) {				entity = clazz.newInstance();				for (Map.Entry entry : map.entrySet()) {					String filedName = entry.getKey();					Object filedObject = entry.getValue();					BeanUtils.setProperty(entity, filedName, filedObject);				}			}		} catch (Exception e) {			e.printStackTrace();		} finally {			JDBCTools.release(result, preparedStatement, connection);		}		return entity;	}	/**	 * 通用查询方法,返回一个结果集	 * 	 * @param clazz	 * @param sql	 * @param args	 * @return	 */	public  List getForList(Class clazz, String sql, Object... args) {		List list = new ArrayList();		Connection connection = null;		PreparedStatement preparedStatement = null;		ResultSet result = null;		try {			connection = JDBCTools.getConnection();			preparedStatement = (PreparedStatement) connection					.prepareStatement(sql);			for (int i = 0; i > values = handleResultSetToMapList(result);			list = transfterMapListToBeanList(clazz, values);		} catch (Exception e) {			e.printStackTrace();		} finally {			JDBCTools.release(result, preparedStatement, connection);		}		return list;	}	/**	 * 	 * @param clazz	 * @param values	 * @return	 * @throws InstantiationException	 * @throws IllegalAccessException	 * @throws InvocationTargetException	 */	public  List transfterMapListToBeanList(Class clazz,			List> values) throws InstantiationException,			IllegalAccessException, InvocationTargetException {		List result = new ArrayList();		T bean = null;		if (values.size() > 0) {			for (Map m : values) {				bean = clazz.newInstance();				for (Map.Entry entry : m.entrySet()) {					String propertyName = entry.getKey();					Object value = entry.getValue();					BeanUtils.setProperty(bean, propertyName, value);				}				// 13. 把 Object 对象放入到 list 中.				result.add(bean);			}		}		return result;	}	/**	 * 	 * @param resultSet	 * @return	 * @throws SQLException	 */	public List> handleResultSetToMapList(			ResultSet resultSet) throws SQLException {		List> values = new ArrayList>();		List columnLabels = getColumnLabels(resultSet);		Map map = null;		while (resultSet.next()) {			map = new HashMap();			for (String columnLabel : columnLabels) {				Object value = resultSet.getObject(columnLabel);				map.put(columnLabel, value);			}			values.add(map);		}		return values;	}	/**	 * 	 * @param resultSet	 * @return	 * @throws SQLException	 */	private List getColumnLabels(ResultSet resultSet)			throws SQLException {		List labels = new ArrayList();		ResultSetMetaData rsmd = (ResultSetMetaData) resultSet.getMetaData();		for (int i = 0; i  E getForValue(String sql, Object... args) {		Connection connection = null;		PreparedStatement preparedStatement = null;		ResultSet resultSet = null;		try {			connection = JDBCTools.getConnection();			preparedStatement = (PreparedStatement) connection					.prepareStatement(sql);			for (int i = 0; i 
package com.sky.connect;import java.io.IOException;import java.io.InputStream;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Properties;import com.mysql.jdbc.Connection;import com.mysql.jdbc.Driver;import com.mysql.jdbc.PreparedStatement;import com.mysql.jdbc.Statement;/** * JDBC操作的工具类 版本 1.0 *  * @author 潘琢文 *  */public class JDBCTools {	/**	 * 使用preparedStatement进行数据更新	 * 	 * @param sql	 * @param args	 */	public static void update(String sql, Object ... args) {		Connection connection = null;		PreparedStatement preparedStatement = null;		try {			connection = JDBCTools.getConnection();			preparedStatement = (PreparedStatement) connection					.prepareStatement(sql);			for (int i = 0; i