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);
输出:

相关文章:
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…...
RPA与深度学习结合
什么是RPA RPA即机器人流程自动化(Robotic Process Automation),它是一种利用软件机器人模拟人类在计算机上的操作,按照预设的规则自动执行一系列重复性、规律性任务的技术。这些任务可以包括数据录入、文件处理、报表生成、系统…...
Ubuntu22.04部署deepseek大模型
Ollama 官方版 Ollama 官方版: https://ollama.com/ 若你的显卡是在Linux上面 可以使用如下命令安装 curl -fsSL https://ollama.com/install.sh | shollama命令查看 rootheyu-virtual-machine:~# ollama -h Large language model runnerUsage:ollama [flags]ollama [comman…...
如何设置Jsoup请求头模拟浏览器访问?
在使用 Jsoup 进行网络爬虫开发时,设置请求头以模拟浏览器访问是非常重要的。这不仅可以帮助我们更好地伪装爬虫,避免被目标网站识别,还可以确保请求的合法性。以下是如何设置 Jsoup 请求头以模拟浏览器访问的详细步骤和示例代码。 1. 设置请…...
JVM 类加载子系统在干什么?
JVM 类加载子系统是什么? 类加载子系统(Class Loader Subsystem)是 JVM 负责 加载、链接和初始化 .class 文件的组件。它的主要作用是将字节码文件加载进 JVM 并准备执行。 类加载器(ClassLoader)是 字节码的搬运工&…...
Redis数据库(二):Redis 常用的五种数据结构
Redis 能够做到高性能的原因主要有两个,一是它本身是内存型数据库,二是采用了多种适用于不同场景的底层数据结构。 Redis 常用的数据结构支持字符串、列表、哈希表、集合和有序集合。实现这些数据结构的底层数据结构有 6 种,分别是简单动态字…...
《量化绿皮书》Chapter 3 Calculus and Linear Algebra 微积分与线性代数(二)
《A Practical Guide To Quantitative Finance Interviews》,被称为量化绿皮书,是经典的量化求职刷题书籍之一,包含以下七章: Chapter 1 General Principles 通用技巧 Chapter 2 Brain Teasers 脑筋急转弯 Chapter 3 Calculus and…...
网络安全溯源 思路 网络安全原理
网络安全背景 网络就是实现不同主机之间的通讯。网络出现之初利用TCP/IP协议簇的相关协议概念,已经满足了互连两台主机之间可以进行通讯的目的,虽然看似简简单单几句话,就描述了网络概念与网络出现的目的,但是为了真正实现两台主机…...
BS架构(笔记整理)
楔子.基本概念 1.在网络架构中: 服务器通常是集中式计算资源,负责处理和存储数据;客户机是请求这些服务的终端设备,可能是个人电脑或移动设备;浏览器则是客户机上用来与服务器交互的工具,负责展示网页内容…...
06排序 + 查找(D2_查找(D2_刷题练习))
目录 1. 二分查找-I 1.1 题目描述 1.2 解题思路 方法:二分法(推荐使用) 2. 二维数组中的查找 2.1 题目描述 2.2 解题思路 方法一:二分查找(推荐使用) 3. 寻找峰值 3.1 题目描述 3.2 解题思路 方…...
客户端渲染和服务端渲染
二者本质的区别:是在哪完成了 HTML 的拼接,服务端渲染是在服务端拼接,客户端渲染是在客户端拼接。 服务端渲染的优缺点 优点 SEO 友好,服务端渲染更有利于爬虫爬取信息。 更快的首屏渲染,因为 HTML 已经在服务端生…...
C++ 设计模式 - 访问者模式
一:概述 访问者模式将作用于对象层次结构的操作封装为一个对象,并使其能够在不修改对象层次结构的情况下定义新的操作。 《设计模式:可复用面向对象软件的基础》一书中的访问者模式因两个原因而具有传奇色彩:一是因为它的复杂性&a…...
海云安开发者智能助手(D10)全面接入DeepSeek,赋能开发者安全高效编码新范式
海云安正式宣布完成与DeepSeek(深度求索)的深度技术融合,旗下核心产品D10开发者智能助手全面接入DeepSeek R1模型。此次合作标志着海云安在"AI驱动开发安全"领域实现重要突破。数据显示,通过DeepSeek R1模型的优化与蒸馏…...
服务器绑定 127.0.0.1 和 0.0.0.0 的区别
前言 IP 地址实际上并不是分配给计算机的,而是分配给网卡的,因此当计算机上存在多块网卡时,每一块网卡都会有自己的 IP 地址。 绑定 127.0.0.1 是绑定到 lookback 这个虚拟的本地回环接口,该接口只处理本机上的数据,…...
ML.NET库学习005:基于机器学习的客户细分实现与解析
文章目录 ML.NET库学习005:基于机器学习的客户细分实现与解析项目主要目的和原理目的原理 项目概述实现的主要功能主要流程步骤使用的主要函数方法关键技术 主要功能和步骤功能详细解读详细步骤解析 数据集及其处理步骤数据集处理步骤关键处理步骤原理1. 数据清洗与…...
分布式id探索
一、为什么要使用分布式id? 随着数据量增加,数据需要进行水平拆分,但表自增id无法满足唯一性; 二、分布式id的特点 1唯一性 2 趋势递增、单调递增(数据库中存放的数据结构数据从小到大有序排列)࿰…...
互联网协议套件中的服务类型(RFC 1349)技术解析与总结
1. 背景与核心目标 RFC 1349 是对 IP 协议头部 服务类型(Type of Service, TOS)字段语义的更新与澄清文档,发布于 1992 年。其主要目标包括: 重新定义 TOS 字段的用途:明确 TOS 字段的语义,解决历史标准中的…...
java-初识List
List: List 是一个接口,属于 java.util 包,用于表示有序的元素集合。List 允许存储重复元素,并且可以通过索引访问元素。它是 Java 集合框架(Java Collections Framework)的一部分 特点: 有序…...
【Linux系统】—— 简易进度条的实现
【Linux系统】—— 简易进度条的实现 1 回车和换行2 缓冲区3 进度条的准备代码4 第一版进度条5 第二版进度条 1 回车和换行 先问大家一个问题:回车换行是什么,或者说回车和换行是同一个概念吗? 可能大家对回车换行有一定的误解࿰…...
一文学会:用DeepSeek R1/V3 + AnythingLLM + Ollama 打造本地化部署的个人/企业知识库,无须担心数据上传云端的泄露问题
文章目录 前言一、AnythingLLM 简介&基础应用1.主要特性2.下载与安装3.配置 LLM 提供商4.AnythingLLM 工作区&对话 二、AnythingLLM 进阶应用:知识增强使用三、AnythingLLM 的 API 访问四、小结1.聊天模式2.本地存储&向量数据库 前言 如果你不知道Olla…...
开源身份和访问管理方案之keycloak(一)快速入门
文章目录 什么是IAM什么是keycloakKeycloak 的功能 核心概念client管理 OpenID Connect 客户端 Client Scoperealm roleAssigning role mappings分配角色映射Using default roles使用默认角色Role scope mappings角色范围映射 UsersGroupssessionsEventsKeycloak Policy创建策略…...
C++STL(六)——list模拟
目录 本次所需实现的三个类一、结点类的模拟实现构造函数 二、迭代器类的模拟实现为什么有迭代器类迭代器类的模板参数说明构造函数运算符的重载- -运算符的重载和!运算符的重载*运算符的重载->运算符的重载引入模板第二个和第三个参数 三、list的模拟实现3.1 默认成员函数构…...
HTML5--网页前端编程(下)
HTML5–网页前端编程(下) 9.常用标签下 (1)表格标签 用来展示数据,显示数据,规整条理,可读性好 基本语法 <table><tr> <td>单元格内的文字</td> <td>单元格内的文字</td>… </tr> <tr> <td>单元格内的文字&l…...
Spring 的 ResponseEntity 包装器使用详解
简介 在 Spring 中,ResponseEntity 是 HTTP 响应的包装器。它允许自定义响应的各个方面: HTTP 状态码 响应主体 HTTP 请求头 使用 ResponseEntity 允许完全控制 HTTP 响应,并且它通常用于 RESTful Web 服务中从控制器方法返回响应。 基…...
Git 分布式版本控制工具使用教程
1.关于Git 1.1 什么是Git Git是一款免费、开源的分布式版本控制工具,由Linux创始人Linus Torvalds于2005年开发。它被设计用来处理从很小到非常大的项目,速度和效率都非常高。Git允许多个开发者几乎同时处理同一个项目而不会互相干扰,并且在…...
linux部署ollama+deepseek+dify
Ollama 下载源码 curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz sudo tar -C /usr -xzf ollama-linux-amd64.tgz启动 export OLLAMA_HOST0.0.0.0:11434 ollama serve访问ip:11434看到即成功 Ollama is running 手动安装deepseek…...
torch_bmm验算及代码测试
文章目录 1. torch_bmm2. pytorch源码 1. torch_bmm torch.bmm的作用是基于batch_size的矩阵乘法,torch.bmm的作用是对应batch位置的矩阵相乘,比如, mat1的第1个位置和mat2的第1个位置进行矩阵相乘得到mat3的第1个位置mat1的第2个位置和mat2的第2个位置…...
Vue3 特点
不强制要求组件有根节点 // vue2 <template><div><h1>标题</h1><p>内容</p></div> </template>// vue3 <template><h1>标题</h1><p>内容</p> </template> 注意事项 虽然 Vue 3 不再强制…...
mysql8 C++源码中创建表函数,表字段最大数量限制,表行最大存储限制
在 MySQL 8 的 C 源码中,表的最大字段数量限制体现在 MAX_FIELDS 宏定义中。这个宏定义了表中可以拥有的最大字段数量。 代码中的体现 在 mysql_prepare_create_table 函数中,有以下代码段检查表的字段数量是否超过最大限制: cpp if (alt…...
CTFHub-RCE系列wp
目录标题 引言什么是RCE漏洞 eval执行文件包含文件包含php://input读取源代码远程包含 命令注入无过滤过滤cat过滤空格过滤目录分隔符过滤运算符综合过滤练习 引言 题目共有如下类型 什么是RCE漏洞 RCE漏洞,全称是Remote Code Execution漏洞,翻译成中文…...
