`
crazier9527
  • 浏览: 1013813 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Apache DBUtils实践

    博客分类:
  • Java
阅读更多

1.DAO基类(数据库操作基类)
 
这里使用了层超类模式,复用代码,统一处理异常,日志等等..

 
BaseDAO:
 
package com.d1zhan;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
 
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
 

public class BaseDAO {
    /**
     * 获取数据库连接
     * @return
     */
    public Connection getConnection() {
        Connection conn = null;
        String jdbcURL = "jdbc:mysql://localhost/dbname";
        String jdbcDriver = "com.mysql.jdbc.Driver";
        String user = "root";
        String password = "root";
        try {
            DbUtils.loadDriver(jdbcDriver);
            conn = DriverManager.getConnection(jdbcURL, user, password);
        } catch (SQLException e) {
            // handle the exception
            e.printStackTrace();
        } finally {
            //DbUtils.closeQuietly(conn);
        }
        return conn;
    }
 
    /**
     * 查找多个对象
     * @param sqlString
     * @param clazz
     * @return
     */
    public List query(String sqlString, Class clazz) {
        List beans = null;
        Connection conn = null;
        try {
            conn = getConnection();
            QueryRunner qRunner = new QueryRunner();
            beans =
                (List) qRunner.query(
                    conn,
                    sqlString,
                    new BeanListHandler(clazz));
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DbUtils.closeQuietly(conn);
        }
        return beans;
    }
 
    /**
     * 查找对象
     * @param sqlString
     * @param clazz
     * @return
     */
    public Object get(String sqlString, Class clazz) {
        List beans = null;
        Object obj = null;
        Connection conn = null;
        try {
            conn = getConnection();
            QueryRunner qRunner = new QueryRunner();
            beans =
                (List) qRunner.query(
                    conn,
                    sqlString,
                    new BeanListHandler(clazz));
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DbUtils.closeQuietly(conn);
        }
        if(beans!=null && !beans.isEmpty()){ //注意这里
             obj=beans.get(0);

        }

        return obj;
    }
 
    /**
     * 执行更新的sql语句,插入,修改,删除
     * @param sqlString
     * @return
     */
    public boolean update(String sqlString) {
        Connection conn = null;
        boolean flag = false;
        try {
            conn = getConnection();
            QueryRunner qRunner = new QueryRunner();
            int i = qRunner.update(conn,sqlString);
            if (i > 0) {
                flag = true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DbUtils.closeQuietly(conn);
        }
        return flag;
    }
}
 
 
2,Employee 雇员数据库操作DAO类
 
 
大家可以看到,下面的DAO类,继承BaseDAO,方法体都是组装sql语句,不必关心异常的处理,资源的管理(Connection,Statement等),这样代码简洁,质量高.
 
EmployeeDAO:
 
package com.d1zhan;
 
import java.util.List;
 
public class EmployeeDAO extends BaseDAO {
 
    /**
     * searchModel的属性,name,address等为查询参数
     * @param searchModel
     * @return
     */
    public List query(Employee searchModel) {
        String sql = "select * from employee where 1=1";
 
        //如果雇员名字不为null,则将雇员名字加入where查询条件
        if (searchModel.getName() != null) {
            sql += "and employee.name like '" + searchModel.getName() + "' ";
        }
        return this.query(sql, Employee.class);
    }
 
    /**
     * 修改雇员信息
     * @param emp
     * @return
     */
    public boolean edit(Employee emp) {
        String sql = "update employee set ";  //注意: set加在外面
 
        //如果name不为null,修改它的值到数据库
        if (emp.getName() != null) {
            sql += "employee.name='" + emp.getName() + "' ,";
        }
 
        //如果address不为null,修改它的值到数据库
        if (emp.getAddress() != null) {
            sql += "employee.address='" + emp.getAddress() + "', ";
        }

        sql=sql.substring(0,sql.length()-1);  //去掉最后一个","
        sql += "where employee.id=" + emp.getId();
        return this.update(sql);
    }
 
    /**
     * 根据雇员ID删除雇员
     * @param id
     * @return
     */
    public boolean delete(int id) {
        String sql = "delete from employee where id =" + id;
        return this.update(sql);
    }
 
    /**
     * 根据雇员ID查找雇员
     * @param id
     * @return
     */
    public Employee get(int id) {
        String sql = "select * from employee where id=" + id;
        return (Employee) this.get(sql, Employee.class);
    }
}
 
3.雇员信息类
 
Employee:
package com.pcm.netrender.model;

public class Employee {
    private int id;
    private String name;
    private String address;
    /**
     * @return
     */
    public String getAddress() {
        return address;
    }
 
    /**
     * @return
     */
    public int getId() {
        return id;
    }
 
    /**
     * @return
     */
    public String getName() {
        return name;
    }
 
    /**
     * @param string
     */
    public void setAddress(String string) {
        address = string;
    }
 
    /**
     * @param i
     */
    public void setId(int i) {
        id = i;
    }
 
    /**
     * @param string
     */
    public void setName(String string) {
        name = string;
    }
 
}

4,现在就可以在业务层(service)调用我们的dao类方法,实现业务逻辑了
在service我们要处理业务逻辑,数据库操作事务等等.
然后Struts Action调用 service类的方法,完成软件了.

使用代码大概是这样的

Employee emp=new Employee();

emp.setName("测试雇员");

emp.setAddress("深圳南山科技园");

EmployeeDAO dao=new EmployeeDAO();

dao.save(emp);

分享到:
评论
1 楼 cjh820425 2010-06-28  
查找对象可以直接使用BeanHandler,不需要再使用BeanListHandler了吧

相关推荐

    commons-dbutils-1.4.jar

    《Apache Commons DBUtils详解及其在Java数据库操作中的应用》 Apache Commons DBUtils是Apache软件基金会开发的一个开源项目,它提供了一套简洁、高效且实用的工具类,用于简化Java应用程序中的数据库操作。这个...

    dbutils + oracle 增删改查批量插入示例

    首先,`dbutils`是Apache软件基金会提供的一个开源项目,它基于Java,提供了简单易用的API,使得开发者可以便捷地执行SQL语句,处理结果集,实现了对数据库的基本操作。它的核心组件包括QueryRunner和DBUtils,其中...

    dbutils1.6

    Apache Commons DBUtils是Java开发中的一个实用工具库,主要用于简化JDBC(Java Database Connectivity)的使用。这个资源包"commons-dbutils-1.6-bin.zip"包含了DBUtils 1.6版本的源代码和相关文档,是理解并使用...

    模仿DBUtils(自己模仿DBUtils写的简易DBUtils)

    在本项目中,你将找到一个自己编写的简易DBUtils实现,虽然它不是Apache官方的DBUtils,但其设计思想和核心功能与原版相似,旨在帮助初学者理解和实践数据库连接管理。 1. **数据库连接池**: DBUtils的核心之一是...

    dbutils框架

    Apache DBUtils(Database Utilities)是一个基于Java的开源数据库操作框架,它由Apache软件基金会提供,旨在简化数据库操作,提高开发效率。DBUtils的核心理念是通过提供一组实用工具类来减少数据库访问代码,使得...

    dbutils的jar包和源码

    **dbutils** 是一个 Apache Commons 项目,它提供了一个简单且高效的 Java 数据库连接工具集。这个工具包是为了简化数据库操作而设计的,它构建在 JDBC(Java Database Connectivity)之上,为开发人员提供了更方便...

    扩展ApacheCommos的DbUtils

    **标题:“扩展Apache Commons的DbUtils”** Apache Commons DbUtils是一个轻量级的Java数据库连接库,它简化了与数据库进行交互的任务,特别是在处理简单的CRUD(创建、读取、更新和删除)操作时。DbUtils是基于...

    org.apache.commons 的 jar 包 源码

    - 学习优秀的设计模式和实践:Apache Commons 项目遵循良好的设计原则,源码中充满了实用的设计模式。 - 了解如何编写可重用的代码:每个模块都尽可能地独立且具有明确的职责,这有助于创建自己的库。 - 解决实际...

    DBUtils数据库的使用

    DBUtils是Java编程环境中一个非常实用的数据库操作工具包,由Apache软件基金会提供。它基于JDBC(Java Database Connectivity)并提供了对数据库操作的简化,让开发者能够更方便、高效地进行数据存取。DBUtils的主要...

    dbutils api

    它通常与Apache Spark等大数据框架结合使用,为开发人员提供了一系列实用的API,以简化数据操作、文件管理和任务调度。本篇文章将深入探讨`dbutils` API的核心概念、主要功能以及使用方法。 ### 1. 核心概念 - **...

    apache中DBUtil学习共28页.pdf.zip

    Apache DBUtils是一个开源Java库,它是Apache软件基金会的一部分,专门设计用于简化数据库...通过深入学习和实践Apache DBUtils,开发者可以在日常工作中更加高效地进行数据库操作,减少出错的可能性,提升代码质量。

    DbUtils应用开发例子--DbUtilsExample.zip

    Apache Common DbUtils是操作数据库的组件,对传统操作数据库的类(JDBC)进行二次封装,可以把结果集转化成List。 DbUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。 应用实践小结: 一、...

    commons-dbutils-1.4 bin+src

    Apache Commons DBUtils是一个Java库,它为数据库操作提供了一些实用工具和抽象,简化了数据库编程。这个"commons-dbutils-1.4 bin+src"压缩包包含两个关键文件:`commons-dbutils-1.4-sources.jar`和`commons-...

    java commons-dbutils-1.2.jar

    `commons-dbutils-1.2.jar` 是一个由Apache软件基金会开发并维护的Java库,它是Apache Commons项目的一部分,专注于简化数据库操作。这个小巧而实用的库为Java开发者提供了一种简单的方式来处理数据库连接,查询结果...

    Commons DbUtils源码阅读之实例及测试应用

    总结来说,Apache Commons DbUtils是一个强大的数据库操作助手,它的源码阅读有助于我们更好地理解和掌握数据库操作的最佳实践。通过实例应用和测试,我们可以深入理解DbUtils的工作原理,并将其有效地应用到实际...

    commons_dbutils1.4_itmop.com_JDBC_开源工具类库.zip

    Apache Commons DBUtils是一个Java库,它简化了JDBC(Java Database Connectivity)的使用,为开发者提供了更方便、更安全的数据库操作方式。这个压缩包文件"commons_dbutils1.4_itmop.com_JDBC_开源工具类库.zip...

    JAVA-JDBC-DbUtils教程简单到精通!

    DbUtils是Apache Commons的一个模块,它为JDBC提供了一个简单实用的工具库,旨在简化数据库操作,使得开发者能够更高效、安全地处理数据库事务。 DbUtils的主要功能包括: 1. **资源管理**:自动关闭数据库连接、...

    dbutils的使用.doc

    dbutils是Databricks Utilities的简称,它是一系列用于简化数据操作、提高开发效率的工具集合,广泛应用于Apache Spark和Databricks平台。下面将深入探讨dbutils的关键知识点,包括其功能、应用场景以及如何高效使用...

    commons-dbutils组件包与源码

    Apache Commons DBUtils是一个Java库,它为数据库操作提供了简单且健壮的工具,极大地简化了JDBC编程。这个组件包和源码的分享是供开发者们学习和研究使用,以提高对数据库操作的理解和实践能力。 DBUtils的核心...

Global site tag (gtag.js) - Google Analytics