`
jiava9900
  • 浏览: 88386 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

gaozhuang211 xiexie Dbutils 详解( gaozhuang)

    博客分类:
  • java
阅读更多
    common dbutils是操作数据库的组件,对传统操作数据库的类进行二次封装,可以把结果集转化成list。


dbutils包括3个包:
org.apache.commons.dbutils
org.apache.commons.dbutils.handlers
org.apache.commons.dbutils.wrappers
dbutils封装了对jdbc的操作,简化了jdbc操作,可以少写代码。

org.apache.commons.dbutils
dbutils 关闭链接等操作
queryrunner 进行查询的操作

org.apache.commons.dbutils.handlers
arrayhandler :将resultset中第一行的数据转化成对象数组
arraylisthandler将resultset中所有的数据转化成list,list中存放的是 object[]
beanhandler :将resultset中第一行的数据转化成类对象
beanlisthandler :将resultset中所有的数据转化成list,list中存放的是类对象
columnlisthandler :将resultset中某一列的数据存成list,list中存放的是 object对象
keyedhandler :将resultset中存成映射,key为某一列对应为map。map中存放的是数据
maphandler :将resultset中第一行的数据存成map映射
maplisthandler :将resultset中所有的数据存成list。list中存放的是map
scalarhandler :将resultset中一条记录的其中某一列的数据存成object

org.apache.commons.dbutils.wrappers
sqlnullcheckedresultset :对resultset进行操作,改版里面的值
stringtrimmedresultset :去除resultset中中字段的左右空格。trim()


主要方法:



dbutils类:启动类

resultsethandler接口:转换类型接口

maplisthandler类:实现类,把记录转化成list

beanlisthandler类:实现类,把记录转化成list,使记录为javabean类型的对象

qrery runner类:执行sql语句的类



建立三个java文件

命名为beanlistexample.java

guestbook.java

maplistexample.java


源码:

beanlistexample.java



code
package com.sy;

import org.apache.commons.dbutils.dbutils;
import org.apache.commons.dbutils.queryrunner;
import org.apache.commons.dbutils.handlers.beanlisthandler;
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.sqlexception;
import java.util.list;

public class beanlistexample {
    public static void main(string[] args) {
        connection conn = null;
        string url = "jdbc:mysql://localhost:3306/people";
        string jdbcdriver = "com.mysql.jdbc.driver";
        string user = "root";
        string password = "hicc";

        dbutils.loaddriver(jdbcdriver);
        try {
            conn = drivermanager.getconnection(url, user, password);
            queryrunner qr = new queryrunner();
            list results = (list) qr.query(conn, "select id,name from guestbook", new beanlisthandler(guestbook.class));
            for (int i = 0; i < results.size(); i++) {
                guestbook gb = (guestbook) results.get(i);
                system.out.println("id:" + gb.getid() + ",name:" + gb.getname());
            }
        } catch (sqlexception e) {
            e.printstacktrace();
        } finally {
            dbutils.closequietly(conn);
        }
    }
}


guestbook.java





code
package com.sy;

public class guestbook {
    private integer id;
    private string name;

    public integer getid() {
        return id;
    }

    public void setid(integer id) {
        this.id = id;
    }

    public string getname() {
        return name;
    }

    public void setname(string name) {
        this.name = name;
    }
}


maplistexample.java



code
package com.sy;

import org.apache.commons.dbutils.dbutils;
import org.apache.commons.dbutils.queryrunner;
import org.apache.commons.dbutils.handlers.maplisthandler;

import java.sql.connection;
import java.sql.drivermanager;
import java.sql.sqlexception;

import java.util.list;
import java.util.map;

public class maplistexample {
    public static void main(string[] args) {
        connection conn = null;
        string url = "jdbc:mysql://localhost:3306/people";
        string jdbcdriver = "com.mysql.jdbc.driver";
        string user = "root";
        string password = "hicc";

        dbutils.loaddriver(jdbcdriver);
        try {
            conn = drivermanager.getconnection(url, user, password);
            queryrunner qr = new queryrunner();
            list results = (list) qr.query(conn, "select id,name from guestmessage", new maplisthandler());
            for (int i = 0; i < results.size(); i++) {
                map map = (map) results.get(i);
                system.out.println("id:" + map.get("id") + ",name:" + map.get("name"));
            }
        } catch (sqlexception e) {
            e.printstacktrace();
        } finally {
            dbutils.closequietly(conn);
        }
    }
}


使用组建好需要添加commons-dbutils-1.1.jar和mysql-connector-java-5.1.6-bin.jar 两个jar包。



配置完毕!!!

//另一种方法
//使用dbutils1.0版本

import java.util.*;
import java.util.logging.*;
import java.sql.*;
import org.apache.commons.dbutils.*;
import org.apache.commons.dbutils.handlers.*;

public class testdbunits {

public static void main(string[]args) throws exception {
  testdbunits test = new testdbunits();
 
  for(int i = 0 ; i < 1 ; i++) {  
   test.testquery1();
   test.testquery2();
   test.testupdate();
  }
}

public void testquery1(){
  try {
   queryrunner qr = new queryrunner() ;
   resultsethandler rsh = new arraylisthandler();  
   string strsql = "select * from test1";  
   arraylist result = (arraylist)qr.query(getconnection() ,strsql ,rsh);
   //system.out.print("");
  } catch(exception ex) {
   ex.printstacktrace(system.out);
  }
}

public void testquery2(){
  try {
   queryrunner qr = new queryrunner() ;
   resultsethandler rsh = new maplisthandler();  
   string strsql = "select * from test1";  
   arraylist result = (arraylist)qr.query(getconnection() ,strsql ,rsh);
   for(int i = 0 ; i < result.size() ; i++) {
    map map = (map)result.get(i);
    //system.out.println(map);   
   }
   //system.out.print("");
  } catch(exception ex) {
   ex.printstacktrace(system.out);
  }
}

public void testupdate(){
  try {
   queryrunner qr = new queryrunner() ;
   resultsethandler rsh = new arraylisthandler();
   string strsql = "insert test1(page ,writable ,content)values('ttt','ttt','faskldfjklasdjklfjasdklj')";
   qr.update(getconnection() ,strsql);
   //system.out.print("");
  } catch(exception ex) {
   ex.printstacktrace(system.out);
  }
}

private  connection getconnection() throws instantiationexception,
   illegalaccessexception, classnotfoundexception, sqlexception {
 
  string strdriver = "org.gjt.mm.mysql.driver";
  string strurl = "jdbc:mysql://localhost:3306/test";
  string struser = "root";
  string strpass = "";
  
  class.forname(strdriver).newinstance(); 
  return drivermanager.getconnection(strurl, struser, strpass);
}
}
 
0
2
分享到:
评论

相关推荐

    平原型生活垃圾填埋场扩容措施研究及应用_刘志刚.pdf

    平原型生活垃圾填埋场扩容措施研究及应用_刘志刚.pdf

    跨模型迁移指南:将OpenAI项目快速适配DeepSeekAPI.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    智能推荐系统实战:DeepSeekAPI在电商场景的个性化排序应用.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    成本控制秘籍:DeepSeekAPI计费机制与优化方案全解.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    Wallpaper Engine 壁纸一键提取

    Wallpaper Engine 是一款广受欢迎的动态壁纸软件,允许用户将各种动态、交互式壁纸应用到桌面上。其丰富的创意工坊内容让用户可以轻松下载和分享个性化的壁纸。而“一键提取”功能则是 Wallpaper Engine 中一个非常实用的工具,能够帮助用户快速提取和保存壁纸资源,方便后续使用或分享。

    性价比革命:DeepSeekAPI成本仅为GPT-4的3%的技术揭秘.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    本地部署DeepSeek模型:API调用与自有算力结合的混合架构设计.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    这是一份非常有意义的实习报告

    这是一份非常有意义的实习报告

    用Python玩转DeepSeek:代码生成接口的10个实战案例.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    爱华AIWA HS-J9磁带随身听维修服务手册 说明书电路原理图PCB图

    爱华AIWA HS-J9磁带随身听维修服务手册 说明书电路原理图PCB图

    从ChatGPT到DeepSeek:API迁移指南与参数映射对照表.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    房屋租赁合同[示范文本].doc

    房屋租赁合同[示范文本].doc

    智能体开发:将DeepSeekAPI集成到知识库系统的全流程.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    单片机 入门学习视频教程 自学资料

    单片机 入门学习视频教程 自学资料

    模型定制化实战:基于DeepSeek的行业术语微调教程.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    5个提升DeepSeekAPI生成质量的调参技巧,开发者必看!.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    参数调优手册:temperature和top_p对输出结果的影响实验.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    auto_gptq-0.5.1.tar.gz

    auto_gptq-0.5.1.tar.gz

    贪心算法7日速成:LeetCode经典题型+华为机考真题.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    结构体 struct关键字用来定义结构体

    结构体 struct关键字用来定义结构体

Global site tag (gtag.js) - Google Analytics