`

Jdbc--Dbutils工具

    博客分类:
  • jdbc
 
阅读更多

Dbutils工具:

Dbutils是对jdbc的一个简单封装,可以让我们在书写jdbc代码时,更加简单方便 。

 

元数据:

元数据MetaData : 指数据库中 库、表、列的定义信息

1、库元数据:

DataBaseMetaData代表的是数据库的元数据。

获取:con.getMetaData();返回一个DataBaseMetaData对象。

DataBaseMetaData对象的方法:

getURL():返回一个String类对象,代表数据库的URL。

getUserName():返回连接当前数据库管理系统的用户名。

getDriverName():返回驱动驱动程序的名称。

getPrimaryKeys(String catalog, String schema, String table):返回指定表主键的结果集

2、ParameterMetaData

我们使用PreparedStatement执行sql语句时,可以在sql语句中使用”?”占位符,

而ParameterMetaData它就是用于获取占位符相关信息。

可以通过PreparedStatement对象的getparameterMetaData()方法获取到parameterMetaData对象。

常用方法:

a)getParameterCount() 

i.获得指定参数的个数

b)getParameterTypeName(int param) 

i.获得指定参数的sql类型

注意:获取占位符的类型时,会产生异常需要在URL后面加上:generateSimpleParameterMetadata=true。

然而添加后异常没有了,但是参数类型却都是varchar类型,因为MySQL的数据库驱动对此方法的支持有问题。

3、ResultSetMetaData

它描述的是select语句执行后获取的结果集的相关信息

通过ResultSet接口的getMetaData()方法获取ResultSetMetaData对象。也可以通过PreparedStatement对象获取

常用方法:

a)getColumnCount() 

i.返回resultset对象的列数

b)getColumnName(int column) 

i.获得指定列的名称

c) getColumnTypeName(int column)

i.获得指定列的类型 

 

dbutils:

dbutils是对jdbc代码的封装.

导包:

commons-dbutils-1.4.jar。

核心:

1.QueryRunner类

在QueryRunner类中有三个方法

1)query方法  它是用于执行select语句

2)update方法  它是用于执行insert,update delete语句

3)batch方法  它是用于执行批处理

2.DbUtils类

它的方法全是static,它提供了关于事务及关闭资源的操作

3.ResultSetHandler接口

它的主要作用是对select语句执行后得到的结果集进行封装。

怎样封装结果集是需要我们自己手动完成。

但是ResultSetHandler提供了九个实现类,可以按照一定的规则对结果集进行封装。

 

QueryRunner:

构造方法:

QueryRunner();

QueryRunner(DataSource ds);

对于我们使用QueryRunner,用以上两个构造就可以。它们的区别:

如果是无参数的,那么在使用它的query,update,batch方法时,就需要有Connection参数的。我们需要进行手动的事务控制。

如果是有参数的QueryRunner,那么在使用它的query,update,batch方法时,就不需要使用有Connection参数的方法。事务是自动处理的。

操作sql的方法:

query(Connection conn, String sql, ResultSetHandler<T> rsh) Execute an SQL SELECT query without any replacement parameters.

query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) Execute an SQL SELECT query with replacement parameters.

以上配合无参构造使用。

query(String sql, ResultSetHandler<T> rsh) Executes the given SELECT SQL without any replacement parameters.

query(String sql, ResultSetHandler<T> rsh, Object... params)  Executes the given SELECT SQL query and returns a result object.

以上配置有参数QueryRunner构造使用

其它参数使用:

1.sql  代表要执行的sql语句

2.rsh  代表查询执行后得到的结果集怎样封装。

3.params 它代表的是sql语句中的占位符的值

返回值:

代表的是结果集封装的对象的类型

Update:

有Connection参数与无参数的QueryRunner构造使用

无Connection参数与有参数的QueryRunner构造使用

其它参数

1.sql  要执行的sql语句

2.params sql语句中的占位符的值

返回值

类型是int,它与executeUpdate方法返回值类似。

Batch:

有Connection参数与无参数的QueryRunner构造使用

无Connection参数与有参数的QueryRunner构造使用

其它参数

1.sql  要执行的sql语句

2.params,它是一个二维数组,就是我们要批处理的sql语句的参数

简单说,二维数组中的每一个一维数组的内容就是一条sql语句的参数。

 

ResultSetHandler:

在ResultSetHandler接口中的handle方法,它的参数就是我们执行sql语句后得到的结果集. 

public int update(Connection con, String sql, Object... params)

throws SQLException {

// 1.得到一个PreparedStatement对象

PreparedStatement pst = con.prepareStatement(sql);

// 2.对参数赋值

// 可以通过ParameterMetaData来获取sql语句中相关的参数信息

ParameterMetaData pmd = pst.getParameterMetaData();

// 2.1 得到参数有几个

int count = pmd.getParameterCount();

if (count == params.length) {

// 2.2对参数进行赋值

for (int i = 1; i <= count; i++) {

pst.setObject(i, params[i - 1]);

}

}

// 3.执行操作

return pst.executeUpdate();

}

2.query方法实现

public <T> T query(Connection con, String sql, MyResultSetHandler<T> mrs,

Object... params) throws Exception {

// 1.得到一个PreparedStatement对象

PreparedStatement pst = con.prepareStatement(sql);

// 2.对参数赋值

// 可以通过ParameterMetaData来获取sql语句中相关的参数信息

ParameterMetaData pmd = pst.getParameterMetaData();

// 2.1 得到参数有几个

int count = pmd.getParameterCount();

if (count == params.length) {

// 2.2对参数进行赋值

for (int i = 1; i <= count; i++) {

pst.setObject(i, params[i - 1]);

}

}

// 3.执行操作

ResultSet rs = pst.executeQuery();

return mrs.handle(rs); // 调用接口中的handle方法将结果集封装成指定的对象。

我们在使用query方法时,必须传递一个MyResultSetHandler接口实现类的对象

}

 

ResultSetHandler接口九个实现类:

ArrayHandler,它是将结果集中第一条记录封装到一个Object[]数组中。

ArrayListHandler,它是将结果集中每一条记录封装到Object[]数组中,在将这些数组封装到List集合中

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

BeanListHandler, 它是将结果集中每一条记录封装到javaBean中,在将这些javaBean在封装到List集合中

ColumnListHandler,  将结果集中指定的列封装到List集合中。

KeyedHandler, 将结果集中每一条记录封装到Map<String,Object>,在将这些Map集合在封装到一个Map信,这个Map集合的key是我们指定的一个列的值,value就是Map<String,Object>;

MapHandler, 将结果集中第一条记录封装到了Map<String,Object> key就是字段名称,value是对应的字段值。

MapListHandler, 将结果集中每一条记录封装到了Map<String,Object> key就是字段名称,value是对应的字段值。在将Map封装到List集合.

 

分享到:
评论

相关推荐

    JAVA-JDBC-DbUtils教程简单到精通!

    DbUtils是Apache Commons的一个模块,它为JDBC提供了一个简单实用的工具库,旨在简化数据库操作,使得开发者能够更高效、安全地处理数据库事务。 DbUtils的主要功能包括: 1. **资源管理**:自动关闭数据库连接、...

    netbeans java web demo4 jsp页分页查询 --jdbc-DBUtils 案例

    【标题】"netbeans java web demo4 jsp页分页查询 --jdbc-DBUtils 案例"涉及的关键知识点主要包括Java Web开发、NetBeans IDE的使用、JSP(JavaServer Pages)、数据库连接(JDBC)以及DBUtils工具类。这个示例教程...

    netbeans java web demo3 jsp页面 添加信息,查询数据库所有记录 --jdbc-DBUtils 案例

    4. Apache DBUtils的运用:理解DBUtils工具类如何简化数据库操作,包括连接管理、结果集处理等。 5. 数据库管理:学会如何导入数据库文件,以及调整数据库连接参数。 6. NetBeans IDE的使用:熟悉IDE的基本操作,如...

    jdbc-helper-0.3.1

    1. **DBUtils**:这是jdbc-helper的核心工具类,提供了连接数据库、执行SQL语句、关闭资源等基本操作。 2. **SqlSession**:SqlSession对象用于执行SQL语句,它支持单条和批量执行,以及事务控制。 3. **Mapper**...

    sql-server2005 的jdbc-odbc驱动和dbutils

    DBUtils提供了诸如QueryRunner、BasicDataSource等实用工具类,可以方便地执行SQL查询、处理结果集、管理数据源等任务。通过DBUtils,开发者可以避免常见的JDBC错误,如资源泄漏,同时提高代码的可读性和可维护性。 ...

    commons-dbutils.jar.rar

    DBUtils通过提供一套高级的JDBC工具,使得开发者可以更方便地利用JDBC功能,而无需关注底层的资源管理和异常处理。 3. **DBUtils的主要特性** - **QueryRunner**: 这是DBUtils的核心类,用于执行SQL查询和更新操作...

    jdbc工具类-DBUtils1.6版jar包-正式版下载

    ### JDBC工具类-DBUtils1.6版jar包-正式版下载 #### 一、简介 Commons DbUtils是Apache组织提供的一款针对JDBC(Java Database Connectivity)进行封装的轻量级工具类库。该工具类库的主要目的是为了简化基于JDBC...

    04-Apache-DBUtils驱动.rar

    这个工具包简化了JDBC(Java Database Connectivity)的使用,通过提供一个健壮且易于使用的抽象层,使得数据库操作变得更加便捷。在JavaWeb开发中,DBUtils被广泛用于处理数据库连接、查询、事务管理等任务,极大地...

    Commons-dbutils1.7 jar包.rar

    commons-dbutils包是Apache开源组织提供的用于操作数据库的工具包。简单来讲,这个工具包就是用来更加方便我们操作数据库的,最近工作中使用了一下,感觉确实方便很多,基本告别自己封装JDBC代码对数据库进行增删改...

    DbUtils数据库查询工具包 v1.8.1.zip

    DbUtils是Apache组织提供的一款Java数据库操作工具包,它的全称是Apache Commons DbUtils。DbUtils的主要目的是简化数据库操作,让开发人员能够更专注于业务逻辑而不是底层的JDBC细节。这个工具包基于Java,适用于...

    commons-dbutils-1.3.zip

    Apache Commons DBUtils是一个Java库,它简化了与数据库交互的任务,是Java开发中常用的数据访问工具。这个压缩包“commons-dbutils-1.3.zip”包含的是DBUtils库的1.3版本。DBUtils库是Apache Commons项目的一部分,...

    commons-dbutils-1.4-bin

    Common Dbutils是操作数据库的组件,对传统操作数据库的类进行二次封装,可以把结果集转化成List。 补充一下,传统操作数据库的类指的是JDBC(java ... DBUtils是java编程中的数据库操作实用工具,小巧简单实用,

    commons-dbutils-1.7

    Apache Commons DbUtils是Java开发中的一个实用工具库,专门针对JDBC(Java Database Connectivity)进行优化,以提供更简洁、高效的数据库操作API。这个库在Java社区中广泛使用,因为它大大减轻了开发者处理数据库...

    DBUtils使用和jar包.rar

    压缩包中存在DbUtils使用说明文档、jar包以及一个使用样例。commons-dbutils 是 Apache 组织提供的一个开源 JDBC 工具类库,对传统操作数据库的类进行二次封装,可以把结果集转化成List。

    JDBC连接池&DBUtils1

    DBUtils 是一个 JDBC 工具类库,提供了一些实用的工具方法来简化 JDBC 操作。例如,DBUtils 提供了一个 QueryRunner 类,可以简化 JDBC 查询操作。DBUtils 还提供了一个 DbUtils类,可以简化 JDBC 的 CRUD 操作。 ...

    commons-dbutils-1.7.jar

    Apache Commons DBUtils是一款在Java编程中广泛使用的数据库操作工具库,它的全称为“Apache Commons Database Utilities”。这个小巧且高效的库为开发者提供了方便、安全的数据库访问接口,降低了处理数据库连接、...

    commons-dbutils-1.6.rar所有jar包

    总的来说,Apache Commons DBUtils是Java开发中一个强大的数据库工具库,它的出现大大简化了JDBC的使用,提高了开发效率和代码的可读性。对于需要处理数据库操作的Java项目,DBUtils是一个值得考虑的选择。

    commons-dbutils-1.6.jar包

    DbUtils 一个JDBC辅助工具集合. ProxyFactory 产生JDBC接口的代理实现. QueryLoader 属性文件加载器,主要用于加载属性文件中的 SQL 到内存中. QueryRunner 使用可插拔的策略执行SQL查询并处理结果集. ...

    commons-dbutils-1.4.jar

    Apache Commons DBUtils是一个Java库,它为数据库操作提供了一些实用工具和抽象,简化了数据库编程。这个"commons-dbutils-1.4.jar"文件是Apache Commons DBUtils项目的1.4版本的归档文件,用于在Java应用程序中方便...

    commons-dbutils-1.6

    Apache Commons DBUtils是Java开发中的一个实用工具库,主要用于简化JDBC(Java Database Connectivity)的使用。这个项目在1.6版本中包含了两个主要的jar文件:`commons-dbutils-1.6.jar`和`commons-dbutils-1.6-...

Global site tag (gtag.js) - Google Analytics