學習dbutils

概述

傳統操作數據庫的類指的是JDBC(java database connectivity:java數據庫連接,java的數據庫操作的基礎API)
Commons DbUtils是Apache組織提供的一個對JDBC進行簡單封裝的開源工具類庫,使用它能夠簡化JDBC應用程序的開發,同時也不會影響程序的性能。

DBUtils是java編程中的數據庫操作實用工具,小巧簡單實用,
1.對於數據表的讀操作,他可以把結果轉換成List,Array,Set等java集合,便於程序	員操作;
2.對於數據表的寫操作,也變得很簡單(只需寫sql語句)
3.可以使用數據源,使用JNDI,數據庫連接池等技術來優化性能--
  重用已經構建好的數據庫連接對象,而不像php,asp那樣,
  費時費力的不斷重複的構建和析構這樣的對象。


DBUtils三個核心功能介紹

QueryRunner中提供對sql語句操作的API
ResultSetHandler接口,用於定義select操作後,怎樣封裝結果集
DBUtils類,它就是一個工具類,定義了關閉資源與事務處理的方法
QueryRunner核心類

QueryRunner(DataSourcr ds),提供數據源(連接池),DbUtils底層自動維護連接connection
update(String sql,Obj…params),執行更新數據
query(String sql,ResultSetHandlerrsh,Object…panrams),執行查詢
ResultSetHandler結果集處理類

ArrayHandler:適合取1條記錄,把結果集中的第一行數據轉成對象數組。

ArrayListHandler:適合取多條記錄,把結果集中的每一行數據都轉成一個對象數組,再存放到List中。

BeanHandler:將結果集中的第一行數據封裝到一個對應的JavaBean實例中(把每條記錄封裝成對象,適合取一條記錄)

BeanListHandler:將結果集中的每一行數據都封裝到一個對應的JavaBean實例中,存放到List裏。//重點

MapHandler:將結果集中的第一行數據封裝到一個Map裏,key是列名,value就是對應的值。//重點

MapListHandler:將結果集中的每一行數據都封裝到一個Map裏,然後再存放到List

ColumnListHandler:將結果集中某一列的數據存放到List中。

KeyedHandler(name):將結果集中的每一行數據都封裝到一個Map裏(List),再把這些map再存到一個map裏,其key爲指定的列。

ScalarHandler:將結果集第一行的某一列放到某個對象中。//重點

package mu.lin.hu.dao.impl;

import mu.lin.hu.dao.IAccountDao;
import mu.lin.hu.domain.Account;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository("accountDao")
public class AccountDaoImpl implements IAccountDao {

    @Autowired
    private QueryRunner runner;

    public List<Account> findAllAccount() {
        List<Account> accountList=null;
        try {

            accountList= runner.query("select * from account",new BeanListHandler<Account>(Account.class));

        }catch (Exception e){
            e.printStackTrace();
        }
        return accountList;
    }

    public Account findById(Integer id) {
        Account account=null;
        try {
           account = runner.query("select id ,name,money from account where id=?",new BeanHandler<Account>(Account.class),id);
        }catch (Exception e){
            e.printStackTrace();
        }

        return account;
    }

    public void saveAccount(Account account) {

        try {
            runner.update("insert into account(name,money) values(?,?) ",account.getName(),account.getMoney());
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public void updateAccount(Account account) {
        try {
            runner.update("update account set name=?,money=? where id=?",account.getName(),account.getMoney(),account.getId());
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public void deleteAccount(Integer accountId) {
        try {
            runner.update("delete from  account where id=? ",accountId);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章