`

apache db

 
阅读更多

queryRunner 摘抄

查询 runner object dbutils update 
日期:8月9日

讲师:佟刚

在相继学习了JDBC和数据库操作之后,我们明显感到编写JDBC代码并非一件轻松的事儿。为了帮助我们更高效的学习工作,从JDBC的繁重代码中解脱出来,老佟给我们详尽介绍了一个简化JDBC操作的组件——DBUtils。我们今天主要学习了它所提供的两个类和一个接口。

组件下载地址:http://commons.apache.org/dbutils/

DbUtils类(org.apache.commons.dbutils.DbUtils)主要负责装载驱动、关闭连接的常规工作。

1.       close: 检查所提供的参数是不是NULL,如果不是的话,它们就关闭连接、声明和结果集。

2.       CloseQuietly:避免连接、声明或结果集为NULL的情况被关闭。

3.       CommitAndCloseQuietly(Connection conn):用来提交连接,然后关闭连接,并且在关闭连接时不向上抛出在关闭时发生的一些SQL异常。

4.       LoadDriver(String driveClassName): 装载并注册JDBC驱动程序,如果成功就返回TRUE。

 

QreryRunner类(org.apache.commons.dbutils.QueryRunner) 显著的简化了SQL查询,并与ResultSetHandler协同工作将使编码量大为减少。

1.       query(Connection conn, String sql, Object[] params, ResultSetHandler rsh):执行选择查询,在查询中,对象阵列的值被用来作为查询的置换参数。

2.       query(String sql, Object[] params, ResultSetHandler rsh):方法本身不提供数据库连接,执行选择查询,在查询中,对象阵列的值被用来作为查询的置换参数。

3.       query(Connection conn, String sql, ResultSetHandler rsh):执行无需参数的选择查询。

4.       update(Connection conn, String sql, Object[] params):被用来执行插入、更新或删除(DML)操作。

 

ResultSetHandler接口(org.apache.commons.dbutils.ResultSethandler)执行处理一个结果集对象,将数据转变并处理为任何一种形式,供其他应用使用。

1.       Object handle (java.sql.ResultSet .rs) :结果集(ResultSet)作为参数传入方法内,处理这个结果集,返回一个对象。

ArrayHandler

ArrayListHandler

BeanHandler

BeanListHandler

MapHandler

MapListHandler

ScalarHandler

我们学习了此组件的两个类和一个接口以后,写了下列代码供参考。

import java.sql.Connection;

import java.sql.SQLException;

 

import org.apache.commons.dbutils.QueryRunner;

import org.apache.commons.dbutils.handlers.BeanListHandler;

 

public class TestQueryRunner {

 

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

                   // TODO Auto-generated method stub

                   //queryOracle();

                   update();

         }

 

         private static void update() throws SQLException{

                   QueryRunner runner = new QueryRunner();

                   Connection conn = DBManager.getConnection();

                   //删除非 manager 中工资 低于 5000 的员工

                   String sql = "UPDATE examstudent SET student_name = ? WHERE flow_id = ?";

                   Object [] params = new Object[]{"Jerry", 5000};

 

                   runner.update(conn, sql, params);

         }

 

         private static void insert() throws SQLException{

                   QueryRunner runner = new QueryRunner();

                   Connection conn = DBManager.getConnection();

                   //删除非 manager 中工资 低于 5000 的员工

                 String sql = "INSERT INTO examstudent(flow_id, type, id_card, exam_card, student_name, location, grade) VALUES(?, ?, ?, ?, ?, ?, ?)";

                   Object [] params = new Object[]{5000, 6, "身份证", "准考证", "Tom", "北京", 99};

 

                   runner.update(conn, sql, params);

         }

 

         private static void delete() throws SQLException{

                   QueryRunner runner = new QueryRunner();

                   Connection conn = DBManager.getConnection();

                   //删除非 manager 中工资 低于 5000 的员工

                   String sql = "delete from employees " +

                                                "where employee_id not in " +

                                                "     (select distinct d.manager_id from departments d where d.manager_id is not null) " +

                                                "and salary < ?";

                   System.out.println(sql);

                   Object [] params = new Object[]{5000};

 

                   runner.update(conn, sql, params);

         }

 

         private static void queryOracle() throws SQLException{

                   QueryRunner runner = new QueryRunner();

 

                   Connection conn = DBManager.getConnection();

                   //oracle 中的别名可以别解析

                   String sql = "SELECT flow_id flowid, type, id_card idcard, exam_card examcard, student_name studentname, location, grade FROM examstudent";

                   Object obj = runner.query(conn, sql, new BeanListHandler(ExamStudent.class));

                   System.out.println(obj);

         }

 

         private static void query() throws SQLException {

                   //1. 创建一个 QueryRunner 的实例

                   QueryRunner runner = new QueryRunner();

 

 

                   Connection conn = DBManager.getConnection();

                   String sql = "SELECT id, name, address, phone FROM customers WHERE name LIKE ?";

                   Class type = Customer.class;

                   Object [] params = new Object[]{"%%"};

 

                   //2. 查询操作

                   //conn: 查询需要的数据库连接, sql: 查询使用的 sql 语句, rsh: 如何转换查询得到的结果集, params: 填补 sql 语句参数的数组

                   Object obj = runner.query(conn, sql, new BeanListHandler(type), params);

                   //System.out.println("^^" + obj);

 

                   sql = "SELECT flow_id flowid, type, id_card idcard, exam_card examcard, student_name studentname, location, grade FROM examstudent";

                   type = ExamStudent.class;

 

                   obj = runner.query(conn, sql, new BeanListHandler(ExamStudent.class));

                   System.out.println(obj);

                   }

}

几天来的学习令人获益匪浅。如同刚开始学习数据库时所说的那样,当今的企业开发大都是围绕数据库进行的,它重要性不言而喻。这些日子,我们从每一个细节入手,希望更广更深的了解掌握数据库开发技术。我的日志显然无法囊括全部所学内容。很多技术还需自己加紧练习,对于这些不敢保证自己的理解万分正确的技术点,我就暂时不写了。待到以后使用之时会提到。

分享到:
评论

相关推荐

    java apache 数据库连接池 天涯浪子

    java apache 数据库 连接池 里边附加使用方法

    apache开源项目源码DdlUtils-1.0-src,全部高质量操作数据库的java源程序

    apache开源项目源码DdlUtils-1.0-src 全部高质量操作数据库的java源程序 各种操作数据库的工具类源码,你会从中得到意想不到的效果! apache开源组织开发的开源项目源码,其优良的代码风格和高质量的源码是学习者...

    Windows下python flask+Apache+mod_wsgi+db2部署

    flask,Apache,mod_wsgi,db2 特别说明:mod_wsgi模块不用编译so

    mod_maxminddb:MaxMind DB Apache模块

    MaxMind DB Apache模块 该模块允许您使用libmaxminddb库从Apache 2.2+中查询MaxMind数据库文件。 要求 此模块要求安装Apache 2.2或2.4,包括任何相应的“ dev”软件包,例如Ubuntu上的apache2-dev 。 您应该在$PATH...

    Apache Derby/Java DB 开发手册

    Derby Developer's Guide. Purpose of this guide This guide explains how to use the core Derby technology and is for developers building Derby applications. It describes basic Derby concepts, such as ...

    flink-statebackend-rocksdb_2.11-1.13.2-API文档-中文版.zip

    标签:apache、flink、statebackend、rocksdb、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...

    Java DB 10.8版本 官方技术手册合集(英文版

    Java DB(英文全称data base,数据库)是依照某种数据模型组织起来并存放二...Java DB 是Oracle 支持的Apache Derby 开源数据库的发行版本。它通过JDBC 和Java EE API 支持标准的ANSI/ISO SQL。Java DB 包括在JDK 中。

    flink-statebackend-rocksdb_2.11-1.10.0-API文档-中文版.zip

    标签:flink、11、rocksdb_2、apache、statebackend、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不

    【实战Apache-Flume采集DB数据到kafka】

    第三方jar 博文链接:https://gaojingsong.iteye.com/blog/2308728

    Apache Hadoop---Elasticsearch.docx

    Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful ...根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

    Apache FtpServer 1.0.6

    Apache FtpServer是一个100%纯Java的、基于现有开放式协议基础上、完整、小巧的FTP服务器。此外,FtpServer还可以作为Windows服务器、Unix / Linux后台程序或是被嵌入在Java应用程序而独立运行。有了MINA...

    struts与ajax设计

    ObjectRelationalBridge(OJB) 1.0.4:OJB是一个开源的对象关系映射工具,最初起源于Apache DB Project。Lucene:它是一个基于Java的开源搜索引擎。可以从http://lucene.apache.org下载Lucene1.9.1。

    db-derby-10.11.1.1-bin.zip

    db-derby-10.11.1.1-bin.zip,apache derby 相当于java db(derby)的完整版

    azure-cosmosdb-spark:适用于Azure Cosmos DB的Apache Spark连接器

    适用于Apache Spark的Azure Cosmos DB连接器 azure-cosmosdb-spark是和的官方连接器。 该连接器使您可以通过python和scala Apache Spark DataFrames轻松读取和写入Azure Cosmos DB。 它还允许您轻松创建用于批处理,...

    SpringBoot + Apache Shiro + Mybatis Plus + Thymeleaf 实现的内容管理系统

    初始化数据库:找到项目数据库文件:docs/db/pb_cms_base.sql,执行 pb_cms_base.sql 安装Redis:Redis最低版本支持 3.2 修改(resources/application.yml)配置文件 修改数据库链接相关连接串、用户名和密码(可搜索...

    orientdb安装包

    OrientDB是一个开源NoSQL数据库管理系统。... OrientDB是第二代分布式数据库,具有灵活性的文档在一个产品与Apache 2许可证的开放源代码。 在OrientDB之前市场上有几个NoSQL数据库,其中一个是MongoDB。

    orientdb-gremlin, OrientDB的TinkerPop3图形结构实现.zip

    orientdb-gremlin, OrientDB的TinkerPop3图形结构实现 orientdb-gremlin Apache TinkerPop 3图形结构OrientDB的实现。 这开始只是一个概念证明,但感谢大家现在的帮助是一个很好的形状。警告:这是( 到现在为止)的...

    XP下apache2.0+tomcat5.0+php5.2

    tomcat5.0 Apache2 mysql-connector-java-5.0.3-bin.jar XP下apache2.0+tomcat5.0+php5.2整合文档.txt XP下apache2.0+tomcat5.0+php5.2整合文档.doc test.php mysql-gui-tools-5.0-r12-win32.msi my.ini db.php ...

    flink-statebackend-rocksdb_2.11-1.13.2-API文档-中英对照版.zip

    标签:apache、flink、statebackend、rocksdb、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,

    org.apache.ivy.eclipse.ant_2.4.0.final_20141213170938.jar

    org.apache.ivy.eclipse.ant_2.4.0.final_20141213170938.jar

Global site tag (gtag.js) - Google Analytics