DBUtils (增删改查)

一、 概述

DBUtilsjava编程中的数据库操作实用工具,小巧简单实用。

DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。

Dbutils三个核心功能介绍

① QueryRunner中提供对sql语句操作的API.

②ResultSetHandler接口,用于定义select操作后,怎样封装结果集.

③DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法

二、 QueryRunner核心类

 

①update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、改操作

实例如下:

复制代码
public class Userdao1 {
     public void add(User user) throws SQLException{
         Connection conn = JDBCUtils.getConn();
         String sql="insert into user(uname,pwd)values(?,?)";
         QueryRunner qr = new QueryRunner();
         int i = qr.update(conn, sql, user.getUname(),user.getPwd());
         conn.close();
     }
     //删除用户信息
     public void delete(int uid) throws SQLException{
         Connection conn = JDBCUtils.getConn();
         String sql="delete from user where uid=?";
         QueryRunner qr=new QueryRunner();
         int i = qr.update(conn, sql, uid);
         conn.close();
     }
     //修改用户信息
     public void update(User user) throws SQLException{
         Connection conn = JDBCUtils.getConn();
         String  sql="update user set uname=?,pwd=? where uid=?";
         QueryRunner qr = new QueryRunner();
         int i=qr.update(conn, sql, user.getUname(),user.getPwd(),user.getUid());
         conn.close();
     }
}
复制代码

创建测试类

复制代码
public class Demo01 {

    public static void main(String[] args) throws SQLException {

User user=new User(); user.setUname("张三"); user.setPwd("123456"); new Userdao1().add(user); new Userdao1().delete(6); User user=new User(); user.setUname("詹姆斯"); user.setPwd("777888"); user.setUid(5); new Userdao1().update(user); } }
复制代码

 ②query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作

ArrayHandler               将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
ArrayListHandler           将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。List<object[]> list 两遍增强for先遍历object数组 在遍历list集合
BeanHandler                将结果集中第一条记录封装到一个指定的javaBean中。
BeanListHandler            将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
ColumnListHandler          将结果集中指定的列的字段值,封装到一个List集合中
ScalarHandler              它是用于单数据。例如select count(*) from 表操作。
MapHandler                 将结果集第一行封装到Map<String,Object>集合中,Key 列名, Value 该列数据
MapListHandler             将结果集每一行封装到List<Map<String,Object>>集合中,Key 列名, Value 该列数据,Map集合存储到List集合
复制代码
public class Userdao1 {//arrayhadler查询
     public void get1() throws SQLException{
         String sql="select * from user";
         QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource());
         Object[] obj=qr.query(sql,new ArrayHandler());
         for(Object o:obj){
             System.out.println(o);
         }
     }
     //ArrayListHandler查询
     public void get2() throws SQLException{
         String sql="select * from user";
         QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource());
         List<Object[]> list=qr.query(sql,new ArrayListHandler());
         for(Object[] obj:list){
             for(Object o:obj){
                 System.out.print(o+"");
             }
             System.out.println();
         }
     }
     //BeanHandler查询 专用于结果集只有一条记录时 返回一个对象
     public void get3() throws SQLException{
//         Connection conn = JDBCUtils.getConn();
         String sql="select * from user";
         QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource());
         User user=qr.query(sql,new BeanHandler<User>(User.class));
         System.out.println(user);
     }
     //BeanListHandler查询
     public void get4() throws SQLException{
//         Connection conn = JDBCUtils.getConn();
         String sql="select * from user";
         QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource());
         List<User> list=qr.query(sql, new BeanListHandler<User>(User.class) );
         for(User u:list){
             System.out.println(u);
         }
//         conn.close();
     }
     //ColumnListHandler查询
     public void get5() throws SQLException{
//         Connection conn = JDBCUtils.getConn();
         String sql="select uname from user";
         QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource());
         List<String> list=qr.query(sql, new ColumnListHandler<String>() );
         for(String u:list){
             System.out.println(u);
         }
     }
     //ScalarHandler查询
     public void get6() throws SQLException{
//         Connection conn = JDBCUtils.getConn();
         String sql="select count(*) from user";
         QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource());
//         int count=qr.query(conn, sql, new ScalarHandler<Integer>() );
         Long count=qr.query(sql, new ScalarHandler<Long>());
         System.out.println(count.intValue());
     }
}
复制代码

测试类

复制代码
public class Demo01 {

    public static void main(String[] args) throws SQLException {
        new Userdao1().get1();
        new Userdao1().get2();
        new Userdao1().get3();
        new Userdao1().get4();
        new Userdao1().get5();
        new Userdao1().get6();
    }

}
复制代码

数据库:

 

 

运行结果如下:

 

posted @   丿狂奔的蜗牛  阅读(493)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示