DBUtils如何使用

DBUtils如何使用
DBUtils是java编程中的数据库操作实用工具,小巧简单实用,

1.对于数据表的读操作,他可以把结果转换成List,Array,Set等java集合,便于程序员操作;

2.对于数据表的写操作,也变得很简单(只需写sql语句)

3.可以使用数据源,使用JNDI, 数据库连接池等技术来优化性能–重用已经构建好的数据库连接对象,而不像php,asp那样,费时费力的不断重复的构建和析构这样的对象。

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

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

public class Guestbook {

private Integer id;

private String name;

public Integer getId() {

return id;

}

/*get,set方法/

}

MapListExample.java

Code

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);

}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值