1. 程式人生 > >使用DBUtils第三方工具類,實現MySQL資料庫的增刪改查

使用DBUtils第三方工具類,實現MySQL資料庫的增刪改查

DBUtuls第三方工具類

使用到的有:
1.ResultSetHandler介面
    結果集處理介面
2.QueryRunner類
    完成資料庫的增/刪/改/查
3.DbUtils類
    定義關閉資源與事物處理方法

1.自定義JDBC工具類與配置檔案,實現資料庫的連線

pro.properties配置檔案

DriverPath=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydatabase
username=root
password=123

JDBCUtils 自定義工具類

package DBUitlsDemo;

import
java.io.FileReader; import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties; /** * JDBC工具類 * Created by Aongi on 2017/5/1. * Version 1.0 */ public class JDBCUtils { public JDBCUtils(){} private static Connection CON; static{ FileReader reader; try
{ String a=JDBCUtils.class.getResource("pro.properties").toString().substring(6); reader = new FileReader(a); //下面也是一種拿到檔案路徑的方式 //InputStream reader=JDBCUtils.class.getClassLoader().getResourceAsStream("pro.properties"); Properties pro = new Properties(); pro.load(reader); reader.close(); Class.forName(pro.getProperty("DriverPath"
)); CON= DriverManager.getConnection(pro.getProperty("url"),pro.getProperty("username"),pro.getProperty("password")); } catch (Exception e) { throw new RuntimeException("連線資料庫失敗!"); } } /* *連結資料庫操作,返回Connection物件 */ public static Connection getConnection(){ return CON; } }

2.定義與資料庫匹配的實體類:Students

1.私有變數對應資料庫的列
2.必須有空參構造方法
3.get/set方法
4.重寫toString方法
package DBUitlsDemo;
/**
 * Created by Aongi on 2017/5/2.
 * Version 1.0
 */
public class Students {
    private Integer uid;
    private String uname;
    private String uaddress;
    private Integer age;

    public Students(Integer uid, String uname, String uaddress, Integer age) {
        this.uid = uid;
        this.uname = uname;
        this.uaddress = uaddress;
        this.age = age;
    }
    public Students(){}

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUaddress() {
        return uaddress;
    }

    public void setUaddress(String uaddress) {
        this.uaddress = uaddress;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return uid + "\t" + uname + "\t" + uaddress + "\t" + age;
    }
}

3.實現增刪改查類:QueryRunnerDemo

1.增加/修改/刪除,寫到了一個方法裡,傳入兩個引數
    String sql   SQL語句
    Object[] params SQL語句中的?佔位符陣列集
2.查詢資料-----8中結果集處理方式
    1.ArrayHandler        查詢------取單行遍歷
    2.ArrayListHandler    查詢------取多行遍歷
    3.BeanHandler         查詢------取單行遍歷
    4.BeanListHandler     查詢------取多行遍歷
    5.MapHandler          查詢------取單行遍歷
    6.MapListHandler      查詢------取多行遍歷
    7.ColumnListHandler   查詢列資料
    8.ScalarHandler       查詢單個數據
package DBUitlsDemo;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.*;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

/**
 * Created by Aongi on 2017/5/2.
 * Version 1.0
 */
public class QueryRunnerDemo {
    private static Connection CON = JDBCUtils.getConnection();

    //資料的增加,修改,刪除
    public static void addUpdataDelete(String sql, Object[] params) throws Exception {
        QueryRunner qr = new QueryRunner();
        int i = qr.update(CON, sql, params);
        DbUtils.close(CON);
        System.out.println(i + "條語句執行成功");
    }

    //main方法
    public static void main(String[] args) throws Exception {
        /**
         * 增加資料
         */
//        String sql="INSERT INTO users (uname,uaddress,age) VALUES (?,?,?);";
//        Object[] params={"小李","guangzhou","30"};
//        addUpdataDelete(sql,params);
        /**
         * 修改資料
         */
//        String sql="UPDATE users SET uname=?,uaddress=?,age=? WHERE uid=?;";
//        Object[] params={"小趙","chengdu","28","10"};
//        addUpdataDelete(sql,params);
        /**
         * 刪除資料
         */
//        String sql="DELETE FROM users WHERE uid=?;";
//        Object[] params={"10"};
//        addUpdataDelete(sql,params);

        /**
         * 查詢資料---8種結果集處理方式
         */
        select();
    }

    /**
     * 多種方式---資料的查詢
     */
    public static void select() throws Exception {
        arrayHandler();//ArrayHandler查詢
        System.out.println("--------------------------------------------------");
        arrayListHandler();//ArrayListHandler查詢
        System.out.println("--------------------------------------------------");
        beanHandler();//BeanHandler查詢
        System.out.println("--------------------------------------------------");
        beanListHandler();//BeanListHandler查詢
        System.out.println("--------------------------------------------------");
        columnListHandler();//ColumnListHandler查詢
        System.out.println("--------------------------------------------------");
        mapHandler();//MapHandler查詢
        System.out.println("--------------------------------------------------");
        mapListHandler();//MapListHandler查詢
        System.out.println("--------------------------------------------------");
        scalarHandler();//ScalarHandler查詢
    }

    /**
     * ArrayHandler查詢-----取一行遍歷
     */
    public static void arrayHandler() throws SQLException {
        QueryRunner qr = new QueryRunner();
        String sql = "SELECT * FROM users WHERE uid=4;";
        Object[] data = qr.query(CON, sql, new ArrayHandler());
        for (Object obj : data) {
            System.out.print(obj + "\t");
        }
        System.out.println();
    }

    /**
     * ArrayListHandler查詢------取多行遍歷
     */
    public static void arrayListHandler() throws SQLException {
        QueryRunner qr = new QueryRunner();
        String sql = "SELECT * FROM users WHERE uid>4;";
        List<Object[]> data = qr.query(CON, sql, new ArrayListHandler());
        for (Object[] obj : data) {
            for (Object o : obj) {
                System.out.print(o + "\t");
            }
            System.out.println();
        }
    }

    /**
     * BeanHandler查詢------取一行遍歷
     * 實體類必須要有空參構造方法
     */
    public static void beanHandler() throws SQLException {
        QueryRunner qr = new QueryRunner();
        String sql = "SELECT * FROM users WHERE uid=4;";
        Students stu = qr.query(CON, sql, new BeanHandler<Students>(Students.class));
        System.out.println(stu);
    }

    /**
     * BeanListHandler查詢------取多行遍歷
     * 實體類必須要有空參構造方法
     */
    public static void beanListHandler() throws SQLException {
        QueryRunner qr = new QueryRunner();
        String sql = "SELECT * FROM users WHERE uid>4;";
        List<Students> stulist = qr.query(CON, sql, new BeanListHandler<Students>(Students.class));
        for (Students stu : stulist) {
            System.out.println(stu);
        }
    }
    /**
     * ColumnListHandler查詢列資料
     * 注意:sql查詢語句裡查詢的資料必須包含你想要查詢的列資料
     */
    public static void columnListHandler() throws SQLException{
        QueryRunner qr = new QueryRunner();
        String sql = "SELECT * FROM users;";
        List<Object> uname = qr.query(CON,sql,new ColumnListHandler<Object>("uname"));
        for (Object obj : uname){
            System.out.print(obj + "\t");
        }
        System.out.println();
    }
    /**
     * MapHandler查詢 -----取單行遍歷
     * 這裡用到了Map集合的遍歷
     */
    public static void mapHandler() throws SQLException{
        QueryRunner qr = new QueryRunner();
        String sql = "SELECT * FROM users WHERE uid=4;";
        Map<String,Object> map= qr.query(CON,sql,new MapHandler());
        for(String key: map.keySet()){
            System.out.print(key+"="+map.get(key)+"\t");
        }
        System.out.println();
    }
    /**
     * MapListHandler查詢-----取多行遍歷
     * 取出的結果是有序的,繼承自LinkedHashMap<String,Object>類
     */
    public static void mapListHandler() throws SQLException {
        QueryRunner qr = new QueryRunner();
        String sql = "SELECT * FROM users WHERE uid>4;";
        List<Map<String,Object>> list= qr.query(CON,sql,new MapListHandler());
        for (Map<String,Object> map:list){
            for(String key: map.keySet()){
                System.out.print(key+"="+map.get(key)+"\t");
            }
            System.out.println();
        }
    }
    /**
     * ScalarHandler查詢 ----- 單個數據
     * ScalarHandler<Object>泛型最好是Object型別
     */
    public static void scalarHandler() throws SQLException{
        QueryRunner qr = new QueryRunner();
        String sql = "SELECT COUNT(*) FROM users";
        Object uname=qr.query(CON,sql,new ScalarHandler<Object>());
        System.out.println(uname);
    }

}