DbUtils如何使用

    科技2026-01-08  10

    使用DbUtils的第一步,导入相关jar包: 驱动jar包与dbutils的工具jar包,缺一不可。

    1、创建工程,导入相关jar包,然后add to build path 2、使用DbUtils完成数据库操作

    步骤:

    获取数据库连接

    创建QueryRunner对象

    使用QueryRunner对象执行sql语句

    处理结果

    释放资源

    第一步获取连接中包含了加载驱动、获取连接,所以本质上还是六步操作!

    (1) 、添加操作

    //添加操作

    public static void

    insertDemo() {

    //1、获取数据库连接 Connection

    connection = JDBCUtils.getConnection();

    //2、创建QueryRunner核心对象,替换了原生jdbc的语句平台 QueryRunner qRunner

    = new QueryRunner();

    //3、执行sql语句 /*

    QueryRunner对象在执行增删改语句时,方法都是update()

    update()方法的返回值是整型数字,代表影响的记录条数

    update()方法此时需要传入连接对象,虽然有六个重载方法,我们只需要记住两个即可

    update(connection, sql) 此方法的sql语句中不能使用?来代替值

    update(connection, sql, 可变参数) 此方法中的sql可以使用?来代替值,因为可以传入绑定的参数!

    */ try {

    //无参方法的演示

    //int row = qRunner.update(connection, “insert into user values (null, ‘王豫川’, ‘222’, ‘男’)”);

    /*

    可变参数 Object... 代表参数是动态数量,也就是参数个数不确定! 可变参数的传递方式: 1、直接传数组。Object[],在数组中为?挨个填写对应的值,要保证?的个数与值的个数一致, 值的类型要与?替代的类型一致 2、将参数挨个书写,使用逗号隔开,但是要注意的是,值的个数与?个数一致,而且类型也得一致 推荐使用第二种!!!

    */

    //有参方法的演示

    /*

    Object[] objs = {“小哈”, “438”, “男”};

    int

    row = qRunner.update(connection, “insert into user values (null, ?, ?, ?)”, objs);*/

    int

    row = qRunner.update(connection, “insert into user values (null, ?, ?, ?)”,

    "骚超", "333", "女");

    System.out.println(row > 0 ? “添加成功” : “添加失败”);

    } catch

    (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } finally {

    //释放资源

    try

    {

    DbUtils.close(connection);

    } catch (SQLException e) {

    // TODO Auto-generated catch block e.printStackTrace();

    }

    } }

    (2) 、删除操作

    //删除操作

    public static void

    deleteDemo() throws SQLException {

    Connection

    connection = JDBCUtils.getConnection();

    QueryRunner qRunner

    = new QueryRunner();

    int row =

    qRunner.update(connection, “delete from user where uid = ?”, 10);

    System.out.println(row

    0 ? “删除成功” : “删除失败”);

    DbUtils.close(connection); }

    (3) 、修改操作

    //修改操作

    public static void

    updateDemo() {

    Connection

    connection = JDBCUtils.getConnection();

    QueryRunner qRunner

    = new QueryRunner();

    try { int

    row = qRunner.update(connection, “update user set uname = ?, pwd = ?, gender = ? where uid = ?”,

    "馊丸子",

    “222”, “女”, 2);

    System.out.println(row > 0 ? “修改成功” : “修改失败”);

    } catch (SQLException

    e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } finally { try

    {

    DbUtils.close(connection);

    } catch (SQLException e) {

    // TODO Auto-generated catch block e.printStackTrace();

    }

    } }

    (4)、查询操作

    查询结果集封装的接口为ResultSetHandler

    这个接口有八大实现类:

    ArrayHandler

    将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值

    ArrayListHandler

    将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。

    BeanHandler

    将结果集中第一条记录封装到一个指定的javaBean中。

    BeanListHandler

    将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中

    ColumnListHandler

    将结果集中指定的列的字段值,封装到一个List集合中

    ScalarHandler

    它是用于单数据。例如select count(*) from 表操作。

    MapHandler

    将结果集第一行封装到Map集合中,Key 列名, Value 该列数据

    MapListHandler

    将结果集每一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合

    示例代码:

    //查询操作

    /* 将结果集中第一条记录封装到一个指定的javaBean中 javaBean 是java类的设计规范: 当我们在设计实体类(model类,存储数据)时,需要注意以下几条规则: 1、类必须是public修饰 2、属性必须私有化 3、私有化属性必须提供setter、getter方法 4、必须保证类中无参构造的存在 */ public static void

    beanHandlerDemo() {

    Connection

    connection = JDBCUtils.getConnection();

    QueryRunner qRunner

    = new QueryRunner();

    /*

    QueryRunner对象在执行查询sql时,需要使用query()方法

    此时需要传入连接对象,只需要记住两个重载方法即可

    query(connection, sql, 结果集实现类) 此方法中的sql不支持?绑定数据

    query(connection, sql, 结果集实现类, 可变参数) 此方法中的sql支持?绑定数据

    */ try {

    /*

    结果集在创建对象时,需要指定对象泛型以及对象类的类对象(反射) 反射此时做的事情: 1、通过反射可以找到类中的无参构造,来创建对象 2、通过反射找到了setter方法,完成了对象中每一个属性的赋值(赋值的内容就是表中字段的内容) 但是我们在使用时,一定要注意的问题是: 1、必须保证无参构造存在,如果没有无参构造,创建不了对象,直接崩溃 2、为了保证属性赋值的成功,属性名必须与表中字段名一致!!!

    */

    User user = qRunner.query(connection, “select * from user where uid = ?”,

    new BeanHandler<User>(User.class),

    3);

    System.out.println(user);

    } catch

    (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } finally { try

    {

    DbUtils.close(connection);

    } catch (SQLException e) {

    // TODO Auto-generated catch block e.printStackTrace();

    }

    } }

    /*

    BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中 */ public static void

    beanListHandlerDemo() throws SQLException {

    Connection

    connection = JDBCUtils.getConnection();

    QueryRunner qRunner

    = new QueryRunner();

    List<User>

    users = qRunner.query(connection, “select * from user”, new BeanListHandler(User.class));

    for (User

    user : users) {

    System.out.println(user);

    } DbUtils.close(connection); }

    /*

    ScalarHandler 它是用于单数据(聚合函数)。例如select

    count(*) from 表操作。

    */ public static void

    scalarHandlerDemo() throws SQLException {

    Connection

    connection = JDBCUtils.getConnection();

    QueryRunner qRunner

    = new QueryRunner();

    long count =

    (Long)qRunner.query(connection, “select count(*) from user”, new ScalarHandler());

    count = (int)count; System.out.println("总用户量为:" + count); DbUtils.close(connection); }

    /*

    ArrayHandler 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值 */ public static void

    arrayHandlerDemo() throws SQLException {

    Connection

    connection = JDBCUtils.getConnection();

    QueryRunner qRunner

    = new QueryRunner();

    Object[] objs =

    qRunner.query(connection, “select * from user where uid = ?”,

    new

    ArrayHandler(), 1);

    for (Object

    object : objs) {

    System.out.println(object);

    } DbUtils.close(connection); }

    /*

    ColumnListHandler 将结果集中指定的列的字段值,封装到一个List集合中 */ public static void

    columnListHandlerDemo() throws SQLException {

    Connection

    connection = JDBCUtils.getConnection();

    QueryRunner qRunner

    = new QueryRunner();

    List<Object>

    list = qRunner.query(connection, “select uname from user”, new ColumnListHandler());

    for (Object

    object : list) {

    System.out.println(object);

    } DbUtils.close(connection); }

    /*

    MapListHandler 将结果集每一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合 */ public static void

    mapListHandlerDemo() throws SQLException {

    Connection

    connection = JDBCUtils.getConnection();

    QueryRunner qRunner

    = new QueryRunner();

    List<Map<String, Object>> list = qRunner.query(connection, “select * from user”, new MapListHandler());

    for

    (Map<String, Object> map : list) {

    Set set = map.keySet();

    for

    (String key : set) {

    System.out.print(map.get(key) +

    “–”);

    }

    System.out.println();

    } DbUtils.close(connection);

    }

    Processed: 0.017, SQL: 9