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

embedded/2025/2/13 8:50:03/

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.ppmy.cn/embedded/161832.html

相关文章

笔记5——元组tuple

元组tuple tuple:一系列按特定顺序排列的元素组成 使用小括号 () 定义&#xff0c;元素之间用 , 隔开 my_tuple (I,love,endless,money) print(my_tuple)特点 不可变 &#xff1a;一旦创建&#xff0c;元组里的元素就不能被修改、添加或删除 可包含任意数据类型 有序性…

《Python百炼成仙》11-20章(不定时跟新)

第十一章 条件渡劫if-else问心 武当金顶的云海翻涌着二进制雪暴&#xff0c;七十二峰化作擎天而立的布尔冰柱。叶军踩着《周易》残页跃上紫霄宫檐角&#xff0c;看见薛香被冰封在水晶般的条件表达式中心&#xff1a; if 道心澄澈:破妄剑意 100else:心魔熵值 * 2楔子三元寒渊 …

对JVM的错误理解与纠正

从程序的角度我来整理一下&#xff0c;先是程序有通过 类加载器 加载字节码到JVM&#xff0c;然后初始化变量&#xff0c;通过执行引擎开始运行&#xff0c;在方法中放的是方法、类和静态变量和常量&#xff0c;然后cpu从方法区获取指令&#xff0c;然后从栈桢 的局部变量中获取…

1.2计算机硬件的基本组成

一、冯诺依曼机 1、冯诺依曼首次提出存储程序的概念 ①存储程序&#xff1a;将指令以二进制的形式事先输入计算机的主存储器&#xff0c;然后按照存储器中程序的首地址执行程序的第一条指令&#xff0c;以后就按该程序的规则顺序执行指令&#xff0c;直到程序结束。 ②第一台…

3. CSS中@scope

说说你对 CSS 中scope 的了解 <style>/* scope规则 */scope (#app) {.box {width: 100px;height: 100px;background-color: red;}} </style> <div id"app"><div class"box"></div> </div>CSS 中的scope 是一个相对较新…

PH热榜 | 2025-02-10

1. 2pr 标语&#xff1a;人工智能帮你把想法变成LinkedIn爆款 或者更口语化一点&#xff1a; AI帮你把点子变成LinkedIn上的热门帖子 介绍&#xff1a;用AI主持的访谈&#xff0c;把你的想法变成LinkedIn爆款帖子。录制你的想法&#xff0c;让AI帮你创作个性化、引人入胜的…

如何使用DHTMLX Scheduler的拖放功能,在 JS 日程安排日历中创建一组相同的事件

DHTMLX Scheduler 是一个全面的调度解决方案&#xff0c;涵盖了与规划事件相关的广泛需求。假设您在我们的 Scheduler 文档中找不到任何功能&#xff0c;并且希望在我们的 Scheduler 文档中看到您的项目。在这种情况下&#xff0c;很可能可以使用自定义解决方案来实现此类功能。…

青少年编程与数学 02-009 Django 5 Web 编程 09课题、视图函数

青少年编程与数学 02-009 Django 5 Web 编程 09课题、视图函数 一、视图视图的类型函数视图类视图 视图的组成视图的配置视图的高级特性 二、控制器&#xff1f;三、函数视图基本结构请求处理数据获取和处理模板渲染视图装饰器错误处理 四、路由配置1. 创建函数视图2. 导入视图…