apache common-dbutils 的使用_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
3
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2330 | 回复: 2   主题: apache common-dbutils 的使用        下一篇 
dream0110
注册用户
等级:中士
经验:242
发帖:87
精华:0
注册:2012-2-15
状态:离线
发送短消息息给dream0110 加好友    发送短消息息给dream0110 发消息
发表于: IP:您无权察看 2015-5-25 11:20:53 | [全部帖] [楼主帖] 楼主

package demo.dbutilsdemo;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.List;

import java.util.Map;

import org.apache.commons.dbutils.DbUtils;

import org.apache.commons.dbutils.QueryRunner;

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

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

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

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

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

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

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

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

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

publicclass dbutilsdemo

{

    @SuppressWarnings("unchecked")

    publicstaticvoid main(String[] args) throws ClassNotFoundException

    {

    UserField userField = new UserField();

    Connection conn = null;

    String jdbcURL = "jdbc:mysql://localhost:3306/mysqldb";

    String jdbcDriver = "com.mysql.jdbc.Driver";

    try

    {

    DbUtils.loadDriver(jdbcDriver);

    conn = DriverManager.getConnection(jdbcURL, "root", "root");

    conn.setAutoCommit(false); // 关闭自动提交

    QueryRunner qRunner = new QueryRunner();

    // 以下部分代码采用MapHandler存储方式查询

    System.out.println("***Using MapHandler***");

    Map map = (Map) qRunner.query(conn, "select * from mc_user_field where id = ?", new MapHandler(), new Object[] { "5" });

    System.out.println("id ------------- name ");

    System.out.println(map.get("id") + " ------------- " + map.get("name"));

    // 以下部分代码采用MapListHandler存储方式查询

    System.out.println("***Using MapListHandler***");

    List lMap = (List) qRunner.query(conn, "select * from mc_user_field", new MapListHandler());

    System.out.println("id ------------- name ");

    for (int i = 0; i < lMap.size(); i++)

    {

    Map vals = (Map) lMap.get(i);

    System.out.println(vals.get("id") + " ------------- " + vals.get("name"));

    }

    // 以下部分代码采用BeanHandler存储方式查询

    System.out.println("***Using BeanHandler***");

    userField = (UserField) qRunner.query(conn, "select * from mc_user_field where id = ?", new BeanHandler(Class.forName("cn.lining.test.UserField")), new Object[] { "5" });

    System.out.println("id ------------- name ");

    System.out.println(userField.getId() + " ------------- " + userField.getName());

    // 以下部分代码采用BeanListHandler存储方式查询

    System.out.println("***Using BeanListHandler***");

    List lBean = (List) qRunner.query(conn, "select * from mc_user_field", new BeanListHandler(Class.forName("cn.lining.test.UserField")));

    System.out.println("id ------------- name ");

    for (int i = 0; i < lBean.size(); i++)

    {

    userField = (UserField) lBean.get(i);

    System.out.println(userField.getId() + " ------------- " + userField.getName());

    }

    // 以下部分代码采用ArrayHandler存储方式查询

    System.out.println("***Using ArrayHandler***");

    Object[] array = (Object[]) qRunner.query(conn, "select * from mc_user_field where id = ?", new ArrayHandler(), new Object[] { "5" });

    System.out.println("id ------------- name ");

    System.out.println(array[0].toString() + " ------------- " + array[1].toString());

    // 以下部分代码采用ArrayListHandler存储方式查询

    System.out.println("***Using ArrayListHandler***");

    List lArray = (List) qRunner.query(conn, "select * from mc_user_field", new ArrayListHandler());

    System.out.println("id ------------- name ");

    for (int i = 0; i < lArray.size(); i++)

    {

    Object[] var = (Object[]) lArray.get(i);

    System.out.println(var[0].toString() + " ------------- " + var[1].toString());

    }

    // 以下部分代码采用ColumnListHandler存储方式查询指定列

    System.out.println("***Using ColumnListHandler***");

    List lName = (List) qRunner.query(conn, "select * from mc_user_field where id = ?", new ColumnListHandler("name"), new Object[] { "5" });

    System.out.println("name ");

    for (int i = 0; i < lName.size(); i++)

    {

    String name = (String) lName.get(i);

    System.out.println(name);

    }

    // 以下部分代码采用ScalarHandler存储方式查询

    System.out.println("***Using ScalarHandler***");

    String name = (String) qRunner.query(conn, "select * from mc_user_field where id = ?", new ScalarHandler("name"), new Object[] { "5" });

    System.out.println("name ");

    System.out.println(name);

    // 以下部分代码采用KeyedHandler存储方式查询

    System.out.println("***Using KeyedHandler***");

    Map<String, Map> map2 = (Map<String, Map>) qRunner.query(conn, "select * from mc_user_field", new KeyedHandler("name"));

    System.out.println("name: field_name2");

    Map vals = (Map) map2.get("field_name2");

    System.out.println(vals.get("id") + " " + vals.get("name") + " " + vals.get("type"));

    // 以下部分代码插入一条数据

    System.out.println("***Insert begin***");

    userField = new UserField();

    qRunner.update(conn, "insert into mc_user_field (" + "id,name,type,sort_order,required,visible)" + "values (?,?,?,?,?,?)", new Object[] { userField.getId(), userField.getName(), userField.getType(), userField.getSort_order(), userField.getRequired(), userField.getVisible() });

    System.out.println("***update end***");

    // 以下部分代码更新一条数据

    System.out.println("***update begin***");

    userField = new UserField();

    qRunner.update(conn, "update mc_user_field set " + "name = ?,type = ?,sort_order = ?," + "required = ?,visible = ?" + "where id = ?", new Object[] { userField.getName(), userField.getType(), userField.getSort_order(), userField.getRequired(), userField.getVisible(), userField.getId() });

    System.out.println("***update end***");

    // 以下部分代码删除一条数据

    System.out.println("***delete begin***");

    userField = new UserField();

    qRunner.update(conn, "delete from mc_user_field where id2 = ?", new Object[] { userField.getId() });

    System.out.println("***delete end***");

    }

    catch (SQLException ex)

    {

    ex.printStackTrace();

    try

    {

    System.out.println("***rollback begin***");

    DbUtils.rollback(conn);

    System.out.println("***rollback end***");

    }

    catch (SQLException e)

    {

    e.printStackTrace();

    }

    }

    finally

    {

    DbUtils.closeQuietly(conn);

    }

    }

}

/*

 * ResultSetHandler 类型

 * ArrayHandler:把结果集中的第一行数据转成对象数组。

 * ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。

 * BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。

 * BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。

 * ColumnListHandler:将结果集中某一列的数据存放到List中。

 * KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里。

 * MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。

 * MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。

 * ScalarHandler:将结果集中某一条记录的其中某一列的数据存成Object。

 */

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
dabusi
注册用户
等级:上士
经验:311
发帖:4
精华:0
注册:2015-5-4
状态:离线
发送短消息息给dabusi 加好友    发送短消息息给dabusi 发消息
发表于: IP:您无权察看 2015-6-1 9:11:52 | [全部帖] [楼主帖] 2  楼

apache common-dbutils 是一个很好地jdbc封装的半成品,很好用。我喜欢用,虽然出来工作公司都用hibernate、mybatis



赞(0)    操作        顶端 
yr
注册用户
等级:少校
经验:1085
发帖:5
精华:0
注册:2015-1-19
状态:离线
发送短消息息给yr 加好友    发送短消息息给yr 发消息
发表于: IP:您无权察看 2015-6-2 10:58:03 | [全部帖] [楼主帖] 3  楼

不知道play框架外面用的多不多呢



赞(0)    操作        顶端 
总帖数
3
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论