java: framework from BLL、DAL、IDAL、MODEL、Factory using oracle 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 BEGIN INSERT 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 BEGIN DELETE 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 BEGIN UPDATE School SET SchoolName = p_school_name, SchoolTelNo = p_school_tel_no WHERE 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 BEGIN SELECT SchoolName, SchoolTelNo INTO p_school_name, p_school_tel_no FROM School WHERE SchoolId = p_school_id; END; CREATE OR REPLACE PROCEDURE getallschools( p_cursor OUT SYS_REFCURSOR ) AS BEGIN OPEN p_cursor FOR SELECT * FROM School; END;
/** * 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 */ @Override public 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 */ @Override public 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 */ @Override public 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 */ @Override public 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 */ @Override public 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 */ @Override public 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);
输出:
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)