JAVA使用DBUtils操作数据库

作者:鲨猫 时间:2024-01-18 11:28:36 

摘要:本文主要学习了如何使用DBUtils在Java代码中更方便的操作数据库。

概述

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

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

使用

准备

如果需要使用DBUtils工具类,需要导包:

commons-dbutils-1.7.jar

DBUtils封装了在建立连接后对数据库的操作,主要有三个核心功能:

1)QueryRunner类提供对SQL语句操作的API。

2)ResultSetHandler接口用于定义查询操作后,如何封装结果集。

3)DBUtils工具类定义了关闭资源与事务处理的方法。

常用方法

构造方法

提供了带数据源和不带数据源的两种构造方法。


public QueryRunner();// 不提供数据源,需要手动维护Connection。
public QueryRunner(DataSource ds);// 提供数据源,DbUtils底层自动维护连接Connection。

查询操作

支持执行查询操作。


public <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh);
public <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params);
public <T> T query(String sql, ResultSetHandler<T> rsh);
public <T> T query(String sql, ResultSetHandler<T> rsh, Object... params);

更新操作

支持执行增加、修改、删除操作。


public int update(Connection conn, String sql);
public int update(Connection conn, String sql, Object param);
public int update(Connection conn, String sql, Object... params);
public int update(String sql);
public int update(String sql, Object param);
public int update(String sql, Object... params);

增加操作

支持执行增加操作,可以返回增加的数据。


public <T> T insert(Connection conn, String sql, ResultSetHandler<T> rsh);
public <T> T insert(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params);
public <T> T insert(String sql, ResultSetHandler<T> rsh);
public <T> T insert(String sql, ResultSetHandler<T> rsh, Object... params);

批量执行

支持批量执行增加、修改、删除操作。


public int[] batch(Connection conn, String sql, Object[][] params);
public int[] batch(String sql, Object[][] params);

存储过程

支持执行存错过程语句,也支持没有存储过程的语句,但没有存错过程的语句不建议调用这个方法。


public int execute(Connection conn, String sql, Object... params);
public int execute(String sql, Object... params);
public <T> List<T> execute(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params);
public <T> List<T> execute(String sql, ResultSetHandler<T> rsh, Object... params);

ResultSetHandler接口说明

  • BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。

  • BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,再存放到List里。

  • ArrayHandler:将结果集中的第一行数据转成对象数组。

  • ArrayListHandler:将结果集中的每一行数据都转成一个对象数组,再存放到List中。

  • MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。

  • MapListHandler:将结果集中的每一行数据都封装到一个Map里,再存放到List

  • ScalarHandler:将结果集第一行的某一列放到某个对象中。

关闭资源与事务处理

是否自动关闭Connection资源是由创建QueryRunner时使用的构造器决定的:

1)如果传入了数据源,那么Connection会自动关闭,在调用增删查改的方法时就不需要传入Connection。这种方式会导致每次执行SQL都会建立新连接,在SQL执行完毕后会断开连接,无法通过Connection控制事务。

2)如果没有传入数据源,那么Connection需要手动关闭,在调用增删查改方法时需要手动传入Connection。这种方式在执行SQL时不会获取新连接,也不会在SQL执行完毕后断开连接,可以根据传入的Connection控制事务。

来源:https://www.cnblogs.com/shamao/p/13219297.html

标签:java,dbutils,操作,数据库
0
投稿

猜你喜欢

  • centos7.3 安装mysql5.7.18的详细教程

    2024-01-12 18:57:00
  • 如何安装SQL Server 2012群集

    2024-01-14 23:35:09
  • Python Selenium 之关闭窗口close与quit的方法

    2023-11-14 01:28:06
  • 讨论闭包传入参数:window & undefined

    2010-05-19 12:55:00
  • vue 项目中当访问路由不存在的时候默认访问404页面操作

    2024-04-30 10:41:49
  • php curl登陆qq后获取用户信息时证书错误

    2023-11-15 08:23:39
  • Numpy中array数组对象的储存方式(n,1)和(n,)的区别

    2022-08-28 03:08:32
  • Python中的Socket 与 ScoketServer 通信及遇到问题解决方法

    2021-02-01 04:08:12
  • Python和Go成为2019年最受欢迎的黑客工具(推荐)

    2021-05-22 16:37:17
  • Node.js对MySQL数据库的增删改查实战记录

    2024-01-14 18:25:12
  • python 实现判断ip连通性的方法总结

    2023-06-24 22:36:53
  • MySQL 4.0 升级到mysql 5.0的方法

    2024-01-18 10:07:12
  • 如何使用Cython对python代码进行加密

    2023-07-21 19:33:40
  • dl,dt,dd标签 VS 传统table实现数据列表

    2009-08-02 20:45:00
  • 微信应用号(小程序)入门安装教程及IDE(破解版)下载

    2022-05-30 02:07:52
  • 怎样开启phpStudy服务器

    2023-05-25 00:38:06
  • 在Python的Flask框架中使用模版的入门教程

    2021-09-14 04:57:59
  • Python 动态变量名定义与调用方法

    2023-07-29 22:36:05
  • BootStrap的select2既可以查询又可以输入的实现代码

    2024-04-28 10:18:41
  • python 中pyqt5 树节点点击实现多窗口切换问题

    2021-07-28 06:19:39
  • asp之家 网络编程 m.aspxhome.com