java中的QueryRunner的8种结果集的实现方法

本文介绍了在Java中使用QueryRunner类处理数据库查询的八种不同方法,包括如何定义Sort类,设置databaseproperties文件,创建数据库连接,并详细展示了每种实现的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QueryRunner类对数据表的查(8种结果集处理方式)

定义Sort类

	public Sort() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Sort(int uid, String uname, String uaddress, String tel) {
		super();
		this.uid = uid;
		this.uname = uname;
		this.uaddress = uaddress;
		this.tel = tel;
	}
	public int getUid() {
		return uid;
	}
	public void setUid(int uid) {
		this.uid = uid;
	}
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public String getUaddress() {
		return uaddress;
	}
	public void setUaddress(String uaddress) {
		this.uaddress = uaddress;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	@Override
	public String toString() {
		return "Sort [uid=" + uid + ", uname=" + uname + ", uaddress=" + uaddress + ", tel=" + tel + "]";
	}
}

定义databaseproperties文件

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/shujuku
username=root
password=***

创建数据库连接对象

package jdbcuitl;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

public class JDBCUitlscon {
	private static Connection con;
	private static String driverClass;
	private static String url;
	private static String username;
	private static String password;
	static{
		try{
			readdatabase();
			Class.forName(driverClass);
			con = DriverManager.getConnection(url, username, password);
			//System.out.println(con);
			}catch(Exception ex){
				throw new RuntimeException("数据库链接失败");
		}
	}
	public static void readdatabase() throws IOException{
		InputStream in = JDBCUitlscon.class.getClassLoader().getResourceAsStream("database.properties");
		Properties pro = new Properties();
		pro.load(in);
		driverClass = pro.getProperty("driverClass");
		url = pro.getProperty("url");
		username = pro.getProperty("username");
		password = pro.getProperty("password");
	}
	public static Connection getConnection()
	{
		return con;
	}
	
}

八种实现方法

package cn.itcast.demo2;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

import cn.itcast.domain.Sort;
import jdbcuitl.JDBCUitlscon;

public class QueryRunnerDemo1 {
	private static Connection con = JDBCUitlscon.getConnection();
	public static void main(String[] args) throws SQLException {
		//arrayHandler();
		//arraylistHandler();
		//beanhandler();
		//beanlisthandler();
		//Columnlisthandler();
		//Scalarhandler();
		//maphandler();
		maplisthandler();
	}
	//结果集第八种 MapListHandler--结果集每一行存储到到集合Map中
	//Map<键,值> 键-列明  值-数据
	//Map集合过多存储到List集合中
	public static void maplisthandler() throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM users";
		List<Map<String, Object>> s = qr.query(con, sql, new MapListHandler());
		//遍历Map
		for (Map<String, Object> map : s) {
			for (String key : map.keySet()) {
				System.out.print(key+"..."+map.get(key)+"\t");
			}
			System.out.println();
		}
	}
	
	//结果集第七种 MapHandler--结果集第一行封装到集合Map中,Map<键,值>
	public static void maphandler() throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM users";
		Map<String, Object> s = qr.query(con, sql, new MapHandler());
		//遍历Map
		for (String key : s.keySet()) {
			System.out.println(key+".."+s.get(key));
		}
	}
	//结果集第6种 ScalarHandler--对于查询只有一个结果
	public static void Scalarhandler() throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT COUNT(*) FROM users";
		long s = qr.query(con, sql, new ScalarHandler<Long>());
		System.out.println(s);
	}
	
	//结果集第五种  ColumnListhandler--结果集,指定列的数据,存储到List集合
	//List<Object>每个列数据类型不同
	public static void Columnlisthandler() throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM users";
		List<Object> s = qr.query(con, sql, new ColumnListHandler<Object>("uname"));
		for (Object sort : s) {
			System.out.println(sort);
		}
	}
	//结果集第四种  BeanListhandler--将结果每一行数据封装到JavaBean对象,
	//多个javaBean对象封装到List集合中
	public static void beanlisthandler() throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM users";
		List<Sort> s = qr.query(con, sql, new BeanListHandler<Sort>(Sort.class));
		for (Sort sort : s) {
			System.out.println(sort);
		}
	}
	//结果集第三种  Beanhandler---将结果集第一行封装程JavaBean对象
	public static void beanhandler() throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM users WHERE uid=5";
		Sort s = qr.query(con, sql, new BeanHandler<Sort>(Sort.class));
		System.out.println(s);
	}
	
	//结果集第二种  ArrayListhandler--将结果集的每一行封装到对象数组中,出现很多集合
	//存到集合list中
	public static void arraylistHandler()throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM zhangwu WHERE zid>2";
		List<Object[]> array = qr.query(con, sql, new ArrayListHandler());
		//System.out.println(array.getClass());
		System.out.println(array.size());
		for (Object[] objs : array) {
			for (Object obj : objs) {
				System.out.print(obj+"   ");
			}
			System.out.println();
		}
	}
	//结果集第一种  Arrayhandler--将结果集第一行存储到对像数组中
	public static void arrayHandler()throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM zhangwu";
		Object[] array = qr.query(con, sql, new ArrayHandler());
		for (Object obj : array) {
			System.out.print(obj+"\t");
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值