首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

dao.Processor 核心用法詳解:多資料庫環境下的持久化操作指南

     編輯:Java 相關知識

dao.Processor 是多資料庫、多實體環境下 Java 物件資料化與持久化的核心類。本文系統整理其六大使用模式,涵蓋實體綁定、DAO 介面綁定、Query 綁定、直接 SQL 執行、擴展批次操作與連線獲取策略。

一、與 Entity 綁定

三種等效獲取方式:

Processor pro = ProcessorFactory.getProcessorInstance(entity);
Processor pro = Processor.getInstance(entity);
Processor pro = Processor.getInstance(); pro.setEntity(entity); // 或 setEntity(String)

生命週期管理:

  • pro.open():從 Entity 設定中透過 DataSource 或 ConnectionManager 獲取資料庫連線。
  • pro.close():關閉並清空所有資料資源。

二、與 DAO 介面綁定

Processor 可綁定多個 DAO 物件(服務 SPI 模式),但每個 DAO 僅能綁定一個 Processor 實例。

// 查詢單筆
DAO dao = pro.findByID(id);
DAO dao = pro.findByName(name);          // 相當於資料庫一行記錄
DAO dao = pro.findByValue(key, value);   // 條件查詢

// 持久化操作(可由容器管理事務)
dao.insert(); dao.update(); dao.delete();
// 對應 pro.insert(dao)、pro.update(dao)、pro.delete(dao)

// 判斷存在性
boolean exists = dao.isExist();

// 直接 SQL 獲取 DAO
DAO dao = pro.getDao(sql);

三、與 Query 綁定

dao.Query 為 XML 定義的 SQL 查詢容器,典型定義:

<query id="insertThread">
  INSERT INTO bbsthread (author, sourceid, views, ...) 
  VALUES (${author}, ${sourceid}, ${views}, ...)
</query>

使用流程:

Query qry = ...;
qry.addVariant("author", "張三");
qry.addVariant("sourceid", 100);
String sql = qry.getSqlStatement(); // 獲取完整 SQL

pro.setQuery(qry);
String msg = pro.execute();              // 執行更新類,成功回傳空字串
ArrayList list = pro.executeQuery();     // 查詢類,回傳 Entity 物件列表
ResultSet rs = pro.getResultSet(qry);    // 獲取原始 ResultSet

四、直接執行 SQL

// 查詢
ResultSet rs = pro.getResultSet(sql);
ArrayList list = pro.getResultList(sql);                    // 使用 Entity 設定的 Class
ArrayList list = pro.getResultList(sql, "com.dao.UserDAO"); // 指定 DAO 介面類名
ArrayList list = pro.getResultList(sql, UserDAO.class);     // 指定 Class 物件

// 條件排序查詢(需 Entity 已設定)
ArrayList list = pro.getResultList(new String[]{"name='John'"}, "id DESC");

// 更新執行
String msg = pro.doUpdate(sql);

五、擴展批次方法

ArrayList stringList = pro.getStringList(qry); // 回傳 String 列表
pro.batchDelete(int[] ids);
pro.batchResume(int[] ids);
pro.batchClear(int[] ids); // 基於已設定 Entity,批次處理指定 ID 集合

六、獲取 Connection 的三種途徑

  1. 透過 Entity 所屬配置獲取連線名。
  2. 透過 Query 的 getConn() 獲取連線名。
  3. 直接呼叫 setConnection(connName) 指定。

最終均由 ConnectionManager 解析為實際 JDBC 連線。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved