apachecommon连接mysql_Apache Commons DbUtils 快速上手

Apache Commons DbUtils 快速上手

Hibernate太复杂,iBatis不好用,JDBC代码太垃圾,DBUtils在简单与优美之间取得了完美平衡。

一、概述

DbUtils小巧的Java数据库操作工具,它在JDBC的基础上做了科学的封装,旨在简化JDBC代码混乱与重复。

对于JDBC代码,存在很多问题,算是对Java的批判:

1、操作过程复杂,代码操作一个模式,大量的重复。

2、结果集难以处理,拿到一个ResultSet干屁啊,一个一个度,转称JavaBean,后来形成List,太麻烦了。

3、到处都强制检查SQLException,烦不烦啊,影响代码的美观和可读性。

当然,以上的批判不是说JDBC设计不合理,二是缺乏更高层操作API的支持。因此才产生了众多的开源数据库操作的框架和工具包。

二、熟悉DBUtils的API

针对DBUitlsAPI的包,做个简单的翻译,以便迅速掌握API的使用。

1、------------------------------------

包org.apache.commons.dbutils

DbUtils是一个为简化JDBC操作的小类库。

接口摘要

ResultSetHandler 将ResultSet转换为别的对象的工具。

RowProcessor 将ResultSet行转换为别的对象的工具。

类摘要

BasicRowProcessor RowProcessor接口的基本实现类。

BeanProcessor BeanProcessor匹配列明到Bean属性名,并转换结果集列到Bean对象的属性中。

DbUtils 一个JDBC辅助工具集合。

ProxyFactory 产生JDBC接口的代理实现。

QueryLoader 属性文件加载器,主要用于加载属性文件中的 SQL 到内存中。

QueryRunner 使用可插拔的策略执行SQL查询并处理结果集。

ResultSetIterator 包装结果集为一个迭代器。

2、------------------------------------

包org.apache.commons.dbutils.handlers

ResultSetHandler接口的实现类

类摘要

AbstractListHandler 将ResultSet转为List的抽象类

ArrayHandler 将ResultSet转为一个Object[]的ResultSetHandler实现类

ArrayListHandler 将ResultSet转换为List的ResultSetHandler实现类

BeanHandler 将ResultSet行转换为一个JavaBean的ResultSetHandler实现类

BeanListHandler 将ResultSet转换为List的ResultSetHandler实现类

ColumnListHandler 将ResultSet的一个列转换为List的ResultSetHandler实现类

KeyedHandler 将ResultSet转换为Map的ResultSetHandler实现类

MapHandler 将ResultSet的首行转换为一个Map的ResultSetHandler实现类

MapListHandler 将ResultSet转换为List的ResultSetHandler实现类

ScalarHandler 将ResultSet的一个列到一个对象。

3、------------------------------------

包org.apache.commons.dbutils.wrappers

添加java.sql类中功能包装类。

类摘要

SqlNullCheckedResultSet 在每个getXXX方法上检查SQL NULL值的ResultSet包装类。

StringTrimmedResultSet 取出结果集中字符串左右空格的ResultSet包装类。

三、环境

Java5

commons-dbutils-1.2-bin.zip

mysql-noinstall-5.1.40-win32.zip

mysql-connector-java-5.1.10.zip

下载地址:

http://apache.freelamp.com/commons/dbutils/binaries/commons-dbutils-1.2-bin.zip

http://gd.tuwien.ac.at/db/mysql/Downloads/MySQL-5.1/mysql-noinstall-5.1.40-win32.zip

http://gd.tuwien.ac.at/db/mysql/Downloads/Connector-J/mysql-connector-java-5.1.10.zip

四、实例

1、sql脚本

create  table  user (

id  int(11)  not  null auto_increment,

name  varchar(50) character  set latin1  not  null,

pswd  varchar(50) character  set latin1  default  null,

primary  key (id)

) engine=MYISAM auto_increment=1  default charset=gbk

2、简单的数据库连接工具

package stu.lavasoft.dbutils;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

/**

* 随便写个数据库连接获取工具,凑合着把例子跑起来

*

* @author leizhimin 2009-11-6 14:48:22

*/

public  class ConnTools {

private  static String dirverClassName =  "com.mysql.jdbc.Driver";

private  static String url =  "jdbc:mysql://192.168.104.101:3306/testdb?useUnicode=true&characterEncoding=utf8";

private static String user = "root";

private static String password = "leizhimin";

public static Connection makeConnection() {

Connection conn = null;

try {

Class.forName(dirverClassName);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

try {

conn = DriverManager.getConnection(url, user, password);

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

}

3、实体Bean

package stu.lavasoft.dbutils;

/**

* 实体Bean

*

* @author leizhimin 2009-11-6 16:05:41

*/

public  class User {

private  int id;

private String name;

private String pswd;

public  int getId() {

return id;

}

public  void setId( int id) {

this.id = id;

}

public String getName() {

return name;

}

public  void setName(String name) {

this.name = name;

}

public String getPswd() {

return pswd;

}

public  void setPswd(String pswd) {

this.pswd = pswd;

}

@Override

public String toString() {

return  "User{" +

"id=" + id +

", name='" + name + '\'' +

", pswd='" + pswd + '\'' +

'}';

}

}

4、测试类

package stu.lavasoft.dbutils;

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.SQLException;

import java.util.List;

/**

* DbUtils入门

*

* @author leizhimin 2009-11-6 14:47:26

*/

public  class Test1 {

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

test_insert();

test_find();

}

public  static  void test_insert()  throws SQLException {

System.out.println( "-------------test_insert()-------------");

//创建连接

Connection conn = ConnTools.makeConnection();

//创建SQL执行工具

QueryRunner qRunner =  new QueryRunner();

//执行SQL插入

int n = qRunner.update(conn,  "insert into user(name,pswd) values('iii','iii')");

System.out.println( "成功插入" + n +  "条数据!");

//关闭数据库连接

DbUtils.closeQuietly(conn);

}

public  static  void test_find()  throws SQLException {

System.out.println( "-------------test_find()-------------");

//创建连接

Connection conn = ConnTools.makeConnection();

//创建SQL执行工具

QueryRunner qRunner =  new QueryRunner();

//执行SQL查询,并获取结果

List list = (List)

qRunner.query(conn,  "select id,name,pswd from user",

new BeanListHandler(User. class));

//输出查询结果

for (User user : list) {

System.out.println(user);

}

//关闭数据库连接

DbUtils.closeQuietly(conn);

}

}

执行结果:

-------------test_insert()-------------

成功插入1条数据!

-------------test_find()-------------

User{id=4, name='bbb', pswd='bbb'}

User{id=3, name='aaa', pswd='bbb'}

User{id=5, name='iii', pswd='iii'}

User{id=6, name='iii', pswd='iii'}

Process finished with exit code 0

呵呵。相比JDBC,的确方便多了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值