QueryRunner类实现对数据库表中数据的增删改查以及八种结果集

update()方法实现增删改

       QueryRunnerupdate方法 update(Connection conn, String sql, Object... params)能够实现对表中数据的增删改,返回int类型的数值,表示对数据表影响的行数。conn为传入的Connection连接对象,sql为要执行的sql语句,Object... paramssql中的占位符添加参数,可以传入一个Object数组或者直接传入参数。

增加操作

	//QueryRunner的insert()方法
	public static void insert() throws SQLException{
		//创建queryrunner对象
		QueryRunner queryRunner = new QueryRunner();
		String sql = "INSERT INTO goods_class (gcname,gcdescribe)VALUES(?,?)";
		//创建object数组
		Object[] params = {"张三","李四"};
		//执行queryrunner的插入方法
		int row = queryRunner.update(connection, sql, params);
	}

删除操作

	//QueryRunner的delete()方法
	public static void delete() throws SQLException {
			//创建queryrunner对象
			QueryRunner queryRunner = new QueryRunner();
			String sql = "delete from goods_class where gcid = ?";
			int row = queryRunner.update(connection, sql, 6);
	}

修改操作

//QueryRunner的update()方法
public static void update() throws SQLException {
		//创建queryrunner对象
		QueryRunner queryRunner = new QueryRunner();
		String sql = "UPDATE goods_class SET gcname=? WHERE gcid=?";
		//创建object数组
		Object[] params = {"王五",6};
		int row = queryRunner.update(connection, sql, params);
}

query()方法实现查询

       QueryRunner中的query方法query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) 能够对数据表中的数据进行查询,返回一个结果集,在不同的情况下可以使用不同的结果集。conn为传入的Connection连接对象,sql为要执行的sql语句,Object... paramssql中的占位符添加参数,可以传入一个Object数组或者直接传入参数,ResultSetHandler<T> 为返回的结果集类型。

  • ArrayHandler
           返回一个对象数组,这个对象数组包含查询结果的第一行数据。可用于查询某一行数据。
public static void arrayHandler() throws SQLException {
		//1.创建queryrunner对象
		QueryRunner queryRunner = new QueryRunner();
		String sql = "SELECT * FROM goods_class";
		//调用queryrunner的query查询方法
		Object[] result = queryRunner.query(connection, sql, new ArrayHandler());
		for(Object obj:result) {
			System.out.print(obj + " ");
		}
	}

       运行结果
运行结果描述

  • ArrayListHandler
           返回所有的对象数组,每一个对象数组包含一行的数据,并装入列表中。
public static void arrayListHandlder() throws SQLException{
		//1.创建queryrunner对象
		QueryRunner queryRunner = new QueryRunner();
		String sql = "SELECT * FROM goods_class";
		//调用queryrunner的query查询方法
		List<Object[]> result = queryRunner.query(connection, sql, new ArrayListHandler());
		for(Object[] objects:result) {
			for(Object object:objects) {
				System.out.print(object + "\t");
			}
			System.out.println();
		}
	}

       运行结果
运行结果

  • BeanHandler
           返回一个类实例对象,运用这个方法时,要先创建一个类,在这个类创建数据表中列名字段,并提供getset方法,必须提供无参构造器。该类实例对象的字段数据为查询数据的第一行数据。传入形参为改类的类加载器。可用于查询某一行数据。
public static void beanHandler() throws SQLException {
		//1.创建queryrunner对象
		QueryRunner queryRunner = new QueryRunner();
		String sql = "SELECT * FROM goods_class";
		//调用queryrunner的query查询方法
		Good_class gc = queryRunner.query(connection, sql, new BeanHandler<Good_class>(Good_class.class));
		System.out.println(gc);
	}

       运行结果
运行结果

  • BeanListHandler
           返回所有类实例对象,并将这些对象装入列表中。运用这个方法时,要创建一个类,在这个类创建数据表中列名字段,并提供getset方法,必须提供无参构造器。该类实例对象的字段数据为查询数据的一行数据。传入形参为改类的类加载器。
public static void beanListHandler() throws SQLException{
		//1.创建queryrunner对象
		QueryRunner queryRunner = new QueryRunner();
		String sql = "SELECT * FROM goods_class";
		//调用queryrunner的query查询方法
		List<Good_class> result = queryRunner.query(connection, sql, new BeanListHandler<Good_class>(Good_class.class));
		for(Good_class good_class:result) {
			System.out.println(good_class);
		}
	}

       运行结果运行结果

  • ColumnListHandler
           返回某一列的数据。如果查询了多列数据,可以传入形参,形参可以为列的索引或者为列名。
public static void columnListHandler() throws SQLException {
		//1.创建queryrunner对象
		QueryRunner queryRunner = new QueryRunner();
		String sql = "SELECT * FROM goods_class";
		//调用queryrunner的query查询方法
		List<Object> result= queryRunner.query(connection, sql, new ColumnListHandler<Object>("gcname"));
		for (Object object : result) {
			System.out.println(object);
		}
	}

       运行结果
运行结果

  • ScalarHandler
           返回一个对象,可以用于查询某列的值计算(如平均值,和,总次数等)或查询表中的某个数据
public static void scalarListHandler() throws SQLException{
		//1.创建queryrunner对象
		QueryRunner queryRunner = new QueryRunner();
		String sql = "SELECT SUM(gcid) FROM goods_class";
		//调用queryrunner的query查询方法
		Object object = queryRunner.query(connection, sql, new ScalarHandler<Object>());
		System.out.println(object);
	}

       运行结果
运行结果

  • MapHandler
           返回一个对象map,key为列名,value为该列数据,只含有查询结果的第一行数据,可用于查询某一行数据。
public static void mapHandler() throws SQLException{
		//1.创建queryrunner对象
		QueryRunner queryRunner = new QueryRunner();
		String sql = "SELECT * FROM goods_class";
		//调用queryrunner的query查询方法
		Map<String,Object> result = queryRunner.query(connection, sql, new MapHandler());
		for(String key:result.keySet()) {
			System.out.println(key + "  " + result.get(key));
		}
	}

       运行结果
运行结果

  • MapListHandler 返回所有的对象map,key为列名,value为该列数据,并将map装入列表中。
public static void mapListHandler() throws SQLException{
		//1.创建queryrunner对象
		QueryRunner queryRunner = new QueryRunner();
		String sql = "SELECT * FROM goods_class";
		//调用queryrunner的query查询方法
		List<Map<String, Object>> result = queryRunner.query(connection, sql, new MapListHandler());
		for (Map<String, Object> map : result) {
			for(String key:map.keySet()) {
				System.out.print(key + "\t" + map.get(key) + "\t");
			}
			System.out.println();
		}
	}

       运行结果
运行结果

  • 22
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个使用QueryRunner和ResultSetHandler接口,对数据库数据增删改查的示例代码: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.List; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; public class DBUtilsExample { private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; private static final String DB_URL = "jdbc:mysql://localhost:3306/test"; private static final String USER = "root"; private static final String PASS = "password"; public static void main(String[] args) throws SQLException, ClassNotFoundException { // 加载驱动 Class.forName(JDBC_DRIVER); // 建立连接 Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); // 创建QueryRunner对象 QueryRunner qr = new QueryRunner(); // 插入数据 String insertSql = "INSERT INTO user(name, age) VALUES (?, ?)"; qr.update(conn, insertSql, "张三", 20); // 删除数据 String deleteSql = "DELETE FROM user WHERE id=?"; qr.update(conn, deleteSql, 1); // 更新数据 String updateSql = "UPDATE user SET age=? WHERE name=?"; qr.update(conn, updateSql, 25, "张三"); // 查询单条数据 String queryOneSql = "SELECT * FROM user WHERE name=?"; ResultSetHandler<User> userHandler = new BeanHandler<>(User.class); User user = qr.query(conn, queryOneSql, userHandler, "张三"); System.out.println(user.getName() + ", " + user.getAge()); // 查询多条数据 String queryListSql = "SELECT * FROM user"; ResultSetHandler<List<User>> userListHandler = new BeanListHandler<>(User.class); List<User> userList = qr.query(conn, queryListSql, userListHandler); for (User u : userList) { System.out.println(u.getName() + ", " + u.getAge()); } // 查询数据总数 String countSql = "SELECT COUNT(*) FROM user"; ResultSetHandler<Long> countHandler = new ScalarHandler<>(); Long count = qr.query(conn, countSql, countHandler); System.out.println("数据总数:" + count); // 关闭连接 conn.close(); } } ``` 在这个示例代码中,我们使用QueryRunner和ResultSetHandler接口完成了数据库增删改查操作。其中,BeanHandler和BeanListHandler是用来将查询结果映射成Java对象的ResultSetHandler实现,ScalarHandler则是用来获取单个值的ResultSetHandler实现。通过使用这些实现,我们可以更加方便地操作数据库
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值