java: framework from BLL、DAL、IDAL、MODEL、Factory using oracle

oracel 21c sql:

-- 創建 School 表
CREATE TABLE School (SchoolId CHAR(5) NOT NULL,SchoolName NVARCHAR2(500) NOT NULL,SchoolTelNo VARCHAR2(8) NULL,PRIMARY KEY (SchoolId)
);CREATE OR REPLACE PROCEDURE addschool(p_school_id IN CHAR,p_school_name IN NVARCHAR2,p_school_tel_no IN VARCHAR2
) AS
BEGININSERT INTO School (SchoolId, SchoolName, SchoolTelNo)VALUES (p_school_id, p_school_name, p_school_tel_no);COMMIT;
END;CREATE OR REPLACE PROCEDURE deleteschool(p_school_id IN CHAR
) AS
BEGINDELETE FROM School WHERE SchoolId = p_school_id;COMMIT;
END;CREATE OR REPLACE PROCEDURE updateschool(p_school_id IN CHAR,p_school_name IN NVARCHAR2,p_school_tel_no IN VARCHAR2
) AS
BEGINUPDATE SchoolSET SchoolName = p_school_name, SchoolTelNo = p_school_tel_noWHERE SchoolId = p_school_id;COMMIT;
END;CREATE OR REPLACE PROCEDURE getschoolbyid(p_school_id IN CHAR,p_school_name OUT NVARCHAR2,p_school_tel_no OUT VARCHAR2
) AS
BEGINSELECT SchoolName, SchoolTelNoINTO p_school_name, p_school_tel_noFROM SchoolWHERE SchoolId = p_school_id;
END;CREATE OR REPLACE PROCEDURE getallschools(p_cursor OUT SYS_REFCURSOR
) AS
BEGINOPEN p_cursor FOR SELECT * FROM School;
END;

復習一下代碼

java:

/*** encoding: utf-8* 版權所有 2025 涂聚文有限公司* 許可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎* 描述:* # Author    : geovindu,Geovin Du 涂聚文.* # IDE       : IntelliJ IDEA 2023.1 Java 21* # database  : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1* # OS        : window10* # Datetime  : 2025 - 2025/2/9 - 16:30* # User      : geovindu* # Product   : IntelliJ IDEA* # Project   : oracledemo* # File      : Model/School.java  類* # explain   : 學習**/package Geovin.Model;/*** 學校表 實體*/
public class School {/****/private String schoolId;/****/private String schoolName;/****/private String schoolTelNo;/*** 構造方法*/public School() {}/**** @param schoolId* @param schoolName* @param schoolTelNo*/public School(String schoolId, String schoolName, String schoolTelNo) {this.schoolId = schoolId;this.schoolName = schoolName;this.schoolTelNo = schoolTelNo;}// Getter 和 Setter 方法/**** @return*/public String getSchoolId() {return schoolId;}/**** @param schoolId*/public void setSchoolId(String schoolId) {this.schoolId = schoolId;}/**** @return*/public String getSchoolName() {return schoolName;}/**** @param schoolName*/public void setSchoolName(String schoolName) {this.schoolName = schoolName;}/**** @return*/public String getSchoolTelNo() {return schoolTelNo;}/**** @param schoolTelNo*/public void setSchoolTelNo(String schoolTelNo) {this.schoolTelNo = schoolTelNo;}/**** @return*/@Overridepublic String toString() {return "School [schoolId=" + schoolId + ", schoolName=" + schoolName + ", schoolTelNo=" + schoolTelNo + "]";}
}/*** encoding: utf-8* 版權所有 2025 涂聚文有限公司* 許可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎* 描述:* # Author    : geovindu,Geovin Du 涂聚文.* # IDE       : IntelliJ IDEA 2023.1 Java 21* # database  : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1* # OS        : window10* # Datetime  : 2025 - 2025/2/9 - 16:33* # User      : geovindu* # Product   : IntelliJ IDEA* # Project   : oracledemo* # File      : Interface/ISchool.java  類* # explain   : 學習**/package Geovin.Interface;
import java.util.List;
import Geovin.Model.School;/*** 接口*/
public interface  ISchool {/*** 添加學校* @param school*/void addSchool(School school);/*** 刪除學校* @param schoolId*/void deleteSchool(String schoolId);/*** 更新學校* @param school*/void updateSchool(School school);/*** 查詢學校* @param schoolId* @return*/School getSchoolById(String schoolId);/*** 查詢所有學校* @return*/List<School> getAllSchools();/*** 儲存過程 添加* @param school* @return*/boolean addProc(School school);/*** 儲存過程* @param schoolId* @return*/boolean deleteProc(String schoolId);/*** 儲存過程* @param school* @return*/boolean updateProc(School school);/*** 儲存過程* @param schoolId* @return*/School getProcById(String schoolId);/*** 儲存過程* @return*/List<School> getAllProc();}/*** encoding: utf-8* 版權所有 2025 涂聚文有限公司* 許可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎* 描述:* # Author    : geovindu,Geovin Du 涂聚文.* # IDE       : IntelliJ IDEA 2023.1 Java 21* # database  : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1* # OS        : window10* # Datetime  : 2025 - 2025/2/9 - 16:36* # User      : geovindu* # Product   : IntelliJ IDEA* # Project   : oracledemo* # File      : DAL/SchoolDAL.java  類* # explain   : 學習**/package Geovin.DAL;
import java.sql.*;
import java.sql.Driver.*;
import oracle.jdbc.*;
import java.util.ArrayList;
import java.util.List;
import Geovin.Model.School;
import Geovin.Interface.ISchool;
import Geovin.UtilitieDB.SqlHelper;/*** 數據處理*/
public class SchoolDAL implements ISchool {/*** 構造方法*/public SchoolDAL() {}/**** @param school*/@Overridepublic void addSchool(School school) {String sql = "INSERT INTO School (SchoolId, SchoolName, SchoolTelNo) VALUES (?, ?, ?)";try (PreparedStatement pstmt = SqlHelper.getConnect().prepareStatement(sql)) {pstmt.setString(1, school.getSchoolId());pstmt.setString(2, school.getSchoolName());pstmt.setString(3, school.getSchoolTelNo());pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();}}/**** @param schoolId*/@Overridepublic void deleteSchool(String schoolId) {String sql = "DELETE FROM School WHERE SchoolId = ?";try (PreparedStatement pstmt = SqlHelper.getConnect().prepareStatement(sql)) {pstmt.setString(1, schoolId);pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();}}/**** @param school*/@Overridepublic void updateSchool(School school) {String sql = "UPDATE School SET SchoolName = ?, SchoolTelNo = ? WHERE SchoolId = ?";try (PreparedStatement pstmt = SqlHelper.getConnect().prepareStatement(sql)) {pstmt.setString(1, school.getSchoolName());pstmt.setString(2, school.getSchoolTelNo());pstmt.setString(3, school.getSchoolId());pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();}}/**** @param schoolId* @return*/@Overridepublic School getSchoolById(String schoolId) {String sql = "SELECT * FROM School WHERE SchoolId = ?";try (PreparedStatement pstmt = SqlHelper.getConnect().prepareStatement(sql)) {pstmt.setString(1, schoolId);ResultSet rs = pstmt.executeQuery();if (rs.next()) {return new School(rs.getString("SchoolId"),rs.getString("SchoolName"),rs.getString("SchoolTelNo"));}} catch (SQLException e) {e.printStackTrace();}return null;}/**** @return*/@Overridepublic List<School> getAllSchools() {List<School> schools = new ArrayList<>();String sql = "SELECT * FROM School";try (Statement stmt =SqlHelper.getConnect().createStatement();ResultSet rs = stmt.executeQuery(sql)) {while (rs.next()) {schools.add(new School(rs.getString("SchoolId"),rs.getString("SchoolName"),rs.getString("SchoolTelNo")));}} catch (SQLException e) {e.printStackTrace();}return schools;}/*** 儲存過程 添加* @param school* @return*/public boolean addProc(School school) {String sql = "{call ADDSCHOOL(?,?,?)}";try (CallableStatement cstmt = SqlHelper.getConnect().prepareCall(sql)) {cstmt.setString(1, school.getSchoolId());cstmt.setString(2, school.getSchoolName());cstmt.setString(3, school.getSchoolTelNo());cstmt.execute();return true;} catch (SQLException e) {e.printStackTrace();return false;}}/*** 儲存過程* @param schoolId* @return*/public boolean deleteProc(String schoolId) {String sql = "{call DELETESCHOOL(?)}";try (CallableStatement cstmt = SqlHelper.getConnect().prepareCall(sql)) {cstmt.setString(1, schoolId);cstmt.execute();return true;} catch (SQLException e) {e.printStackTrace();return false;}}/*** 儲存過程* @param school* @return*/public boolean updateProc(School school) {String sql = "{call UPDATESCHOOL(?,?,?)}";try (CallableStatement cstmt = SqlHelper.getConnect().prepareCall(sql)) {cstmt.setString(1, school.getSchoolId());cstmt.setString(2, school.getSchoolName());cstmt.setString(3, school.getSchoolTelNo());cstmt.execute();return true;} catch (SQLException e) {e.printStackTrace();return false;}}/*** 儲存過程* @param schoolId* @return*/public School getProcById(String schoolId) {String sql = "{call GETSCHOOLBYID(?,?)}";try (CallableStatement cstmt = SqlHelper.getConnect().prepareCall(sql)) {cstmt.setString(1, schoolId);cstmt.registerOutParameter(2, OracleTypes.CURSOR);cstmt.execute();ResultSet rs = (ResultSet) cstmt.getObject(2);if (rs.next()) {String id = rs.getString("SchoolId");String name = rs.getString("SchoolName");String telNo = rs.getString("SchoolTelNo");return new School(id, name, telNo);}} catch (SQLException e) {e.printStackTrace();}return null;}/*** 儲存過程* @return*/public List<School> getAllProc() {List<School> schoolList = new ArrayList<>();String sql = "{call GETALLSCHOOLS(?)}";try (CallableStatement cstmt = SqlHelper.getConnect().prepareCall(sql)) {cstmt.registerOutParameter(1, OracleTypes.CURSOR);cstmt.execute();ResultSet rs = (ResultSet) cstmt.getObject(1);while (rs.next()) {String id = rs.getString("SchoolId");String name = rs.getString("SchoolName");String telNo = rs.getString("SchoolTelNo");schoolList.add(new School(id, name, telNo));}} catch (SQLException e) {e.printStackTrace();}return schoolList;}}/*** encoding: utf-8* 版權所有 2025 涂聚文有限公司* 許可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎* 描述:* # Author    : geovindu,Geovin Du 涂聚文.* # IDE       : IntelliJ IDEA 2023.1 Java 21* # database  : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1* # OS        : window10* # Datetime  : 2025 - 2025/2/9 - 16:42* # User      : geovindu* # Product   : IntelliJ IDEA* # Project   : oracledemo* # File      : BLL/SchoolBLL.java  類* # explain   : 學習**/package Geovin.BLL;import Geovin.Interface.ISchool;
import Geovin.Factory.AbstractFactory;
import Geovin.Model.School;
import java.util.List;/*** 業務處理層*/
public class SchoolBLL {private ISchool dal;public SchoolBLL() {dal = AbstractFactory.getDAL(); // 通過工廠獲取 DAL 實例}/*** 添加學校* @param school*/public void addSchool(School school) {dal.addSchool(school);}/*** 刪除學校* @param schoolId*/public void deleteSchool(String schoolId) {dal.deleteSchool(schoolId);}/*** 更新學校* @param school*/public void updateSchool(School school) {dal.updateSchool(school);}/*** 查詢學校* @param schoolId* @return*/public School getSchoolById(String schoolId) {return dal.getSchoolById(schoolId);}/*** 查詢所有學校* @return*/public List<School> getAllSchools() {return dal.getAllSchools();}/*** 儲存過程 添加* @param school* @return*/public boolean addProc(School school){return dal.addProc(school);}/*** 儲存過程* @param schoolId* @return*/public boolean deleteProc(String schoolId){return dal.deleteProc(schoolId);}/*** 儲存過程* @param school* @return*/public boolean updateProc(School school){return dal.updateProc(school);}/*** 儲存過程* @param schoolId* @return*/public School getProcById(String schoolId){return dal.getProcById(schoolId);}/*** 儲存過程* @return*/public List<School> getAllProc(){return dal.getAllProc();}}

調用:

//sql
//schoolBLL.getAllSchools().forEach(System.out::println);
schoolBLL.getAllProc().forEach(System.out::println);

輸出:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895091.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895091.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895091.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決錯誤:CondaHTTPError: HTTP 000 CONNECTION FAILED for url

解決錯誤&#xff1a;CondaHTTPError: HTTP 000 CONNECTION FAILED for url 查看channels:vim ~/.condarcshow_channel_urls: true channels:- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/…

Apache APISIX 快速入門

文章目錄 apisix 快速入門什么是apisix有了 NGINX 和 Kong&#xff0c;為什么還需要 Apache APISIX&#xff1f;軟件架構基于 Nginx 開源版本&#xff0c;而 Nginx 并不支持動態配置&#xff0c;為什么 Apache APISIX 聲稱自己可以實現動態配置&#xff1f; 安裝配置 APISIX配置…

2025嵌入式高頻面試題解析

一、概述 到了年初&#xff0c;是求職者最活躍的時間。本文梳理了嵌入式高頻面試題&#xff0c;幫助求職者更好地準備面試&#xff0c;同時也為技術愛好者提供深入學習嵌入式知識的參考。 二、C 語言基礎 2.1 指針與數組 問題 1&#xff1a;指針和數組的區別是什么&#xf…

1.攻防世界 baby_web

題目描述這里有提示&#xff0c;初始頁面 進入題目頁面如下 很簡潔的頁面只有一行HELLO WORLD ctrlu查看了源碼也沒有信息 用burp suite抓包&#xff0c;并發送到重放器 根據提示&#xff08;初始頁面&#xff09;修改訪問index.php文件 index.php index.php 是一種常見的…

什么是三層交換技術?與二層有什么區別?

什么是三層交換技術&#xff1f;讓你的網絡飛起來&#xff01; 一. 什么是三層交換技術&#xff1f;二. 工作原理三. 優點四. 應用場景五. 總結 前言 點個免費的贊和關注&#xff0c;有錯誤的地方請指出&#xff0c;看個人主頁有驚喜。 作者&#xff1a;神的孩子都在歌唱 大家好…

【機器學習】數據預處理之數據歸一化

數據預處理之數據歸一化 一、摘要二、數據歸一化概念三、數據歸一化實現方法3.1 最值歸一化方法3.2 均值方差歸一化方法 一、摘要 本文主要講述了數據歸一化&#xff08;Feature Scaling&#xff09;的重要性及其方法。首先通過腫瘤大小和發現時間的例子&#xff0c;說明了不同…

【AIGC】語言模型的發展歷程:從統計方法到大規模預訓練模型的演化

博客主頁&#xff1a; [小????????] 本文專欄: AIGC | ChatGPT 文章目錄 &#x1f4af;前言&#x1f4af;語言模型的發展歷程&#xff1a;從統計方法到大規模預訓練模型的演化1 統計語言模型&#xff08;Statistical Language Model, SLM&#xff09;&#xff1a;統…

高效知識管理與分類優化指南:從目錄設計到實踐應用

摘要 本文旨在幫助讀者在信息爆炸時代構建高效的知識管理體系&#xff0c;提供了知識收藏目錄、瀏覽器書簽和電腦文件夾的優化分類方案。知識收藏目錄方案包括工作與項目、記錄與日常、知識管理等八大類&#xff0c;具有邊界清晰、擴展靈活、貼合實際場景等優勢。瀏覽器書簽分類…

OpenAI 實戰進階教程 - 第十二節 : 多模態任務開發(文本、圖像、音頻)

適用讀者與目標 適用讀者&#xff1a;已經熟悉基礎的 OpenAI API 調用方式&#xff0c;對文本生成或數據處理有一定經驗的計算機從業人員。目標&#xff1a;在本節中&#xff0c;你將學會如何使用 OpenAI 提供的多模態接口&#xff08;圖像生成、語音轉錄等&#xff09;開發更…

Java面試題2025-JVM

JVM 1.為什么需要JVM&#xff0c;不要JVM可以嗎&#xff1f; 1.JVM可以幫助我們屏蔽底層的操作系統 一次編譯&#xff0c;到處運行 2.JVM可以運行Class文件 2.JDK&#xff0c;JRE以及JVM的關系 3.我們的編譯器到底干了什么事&#xff1f; 僅僅是將我們的 .java 文件轉換成了…

Deepseek的MLA技術原理介紹

DeepSeek的MLA(Multi-head Latent Attention)技術是一種創新的注意力機制,旨在優化Transformer模型的計算效率和內存使用,同時保持模型性能。以下是MLA技術的詳細原理和特點: 1. 核心思想 MLA技術通過低秩聯合壓縮技術,將多個注意力頭的鍵(Key)和值(Value)映射到一…

QML初識

目錄 一、關于QML 二、布局定位和錨點 1.布局定位 2.錨點詳解 三、數據綁定 1.基本概念 2.綁定方法 3.數據模型綁定 四、附加屬性及信號 1.附加屬性 2.信號 一、關于QML QML是Qt框架中的一種聲明式編程語言&#xff0c;用于描述用戶界面的外觀和行為&#xff1b;Qu…

java項目之美妝產品進銷存管理系統的設計與開發源碼(ssm+mysql)

項目簡介 美妝產品進銷存管理系統的設計與開發實現了以下功能&#xff1a; 美妝產品進銷存管理系統的設計與開發的主要使用者分為管理員登錄后修改個人的密碼。產品分類管理中&#xff0c;對公司內的所有產品分類進行錄入&#xff0c;也可以對產品分類進行修改和刪除。產品管…

Python(pymysql包)操作MySQL【增刪改查】

下載pymysql&#xff1a; pip install pymysql 在MySQL中創建數據庫&#xff1a;unicom create database unicom DEFAULT CHARSET utf8 COLLATE utf8_general_ci;use unicom; 在unicom中創建數據表&#xff1a;admin create table admin(id int not null primary key auto_i…

日志2025.2.9

日志2025.2.9 1.增加了敵人揮砍類型 2.增加了敵人的死亡狀態 在敵人身上添加Ragdoll&#xff0c;死后激活布偶模式 public class EnemyRagdoll : MonoBehaviour { private Rigidbody[] rigidbodies; private Collider[] colliders; private void Awake() { rigidbodi…

HTTP無狀態的概念以及對后端服務的設計會產生的影響

HTTP無狀態(Statelessness) 是指每個HTTP請求都是獨立的,服務器不會記住或依賴于前一個請求的任何信息。每次請求的處理都與其他請求沒有直接關系。也就是說,服務器在處理請求時,不會存儲關于客戶端狀態的信息。 一、HTTP無狀態的具體含義 ①每個請求獨立:每個請求包含了…

操作系統—進程與線程

補充知識 PSW程序狀態字寄存器PC程序計數器&#xff1a;存放下一條指令的地址IR指令寄存器&#xff1a;存放當前正在執行的指令通用寄存器&#xff1a;存放其他一些必要信息 進程 進程&#xff1a;進程是進程實體的運行過程&#xff0c;是系統進行資源分配和調度的一個獨立單位…

python:面向對象案例烤雞翅

自助烤雞翅的需求&#xff1a; 1.烤雞翅的時間和對應的狀態&#xff1a; 0-4min :生的 4-7min:半生不熟 7-12min&#xff1a;熟了 12min以上&#xff1a;烤糊了 2.添加調料&#xff1a; 客戶根據自己的需求添加 定義烤雞翅的類、屬性和方法&#xff0c;顯示對象的信息 …

【基于SprintBoot+Mybatis+Mysql】電腦商城項目之上傳頭像和新增收貨地址

&#x1f9f8;安清h&#xff1a;個人主頁 &#x1f3a5;個人專欄&#xff1a;【Spring篇】【計算機網絡】【Mybatis篇】 &#x1f6a6;作者簡介&#xff1a;一個有趣愛睡覺的intp&#xff0c;期待和更多人分享自己所學知識的真誠大學生。 目錄 &#x1f680;1.上傳頭像 -持久…

Windows下ollama詳細安裝指南

文章目錄 1、Windows下ollama詳細安裝指南1.1、ollama介紹1.2、系統要求1.3、下載安裝程序1.4、安裝步驟1.5、驗證安裝1.6、環境變量配置1.7、模型選擇與安裝【deepseek 示例】1.7.1、拉取并運行模型1.7.2、進階使用技巧 1、Windows下ollama詳細安裝指南 1.1、ollama介紹 olla…