java: framework from BLL、DAL、IDAL、MODEL、Factory using postgresql 17.0
postgresql sql:
CREATE TABLE School ( SchoolId CHAR(5) PRIMARY KEY, -- 主键 SchoolName VARCHAR(500) NOT NULL, SchoolTelNo VARCHAR(8) NULL ); CREATE OR REPLACE FUNCTION addschool( p_school_id CHAR(5), p_school_name VARCHAR(500), p_school_tel_no VARCHAR(8) ) RETURNS VOID AS $$ BEGIN INSERT INTO School (SchoolId, SchoolName, SchoolTelNo) VALUES (p_school_id, p_school_name, p_school_tel_no); END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION deleteschool( p_school_id CHAR(5) ) RETURNS VOID AS $$ BEGIN DELETE FROM School WHERE SchoolId = p_school_id; END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION updateschool( p_school_id CHAR(5), p_school_name VARCHAR(500), p_school_tel_no VARCHAR(8) ) RETURNS VOID AS $$ BEGIN UPDATE School SET SchoolName = p_school_name, SchoolTelNo = p_school_tel_no WHERE SchoolId = p_school_id; END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION getschoolbyid( p_school_id CHAR(5) ) RETURNS TABLE ( SchoolId CHAR(5), SchoolName VARCHAR(500), SchoolTelNo VARCHAR(8) ) AS $$ BEGIN RETURN QUERY SELECT SchoolId, SchoolName, SchoolTelNo FROM School WHERE SchoolId = p_school_id; END; $$ LANGUAGE plpgsql; DROP FUNCTION IF EXISTS getallschools(); CREATE OR REPLACE FUNCTION getallschools() RETURNS TABLE ( school_id CHAR(5), school_name VARCHAR(500), school_tel_no VARCHAR(8) ) AS $$ BEGIN RETURN QUERY SELECT School.SchoolId, School.SchoolName, School.SchoolTelNo FROM School; END; $$ LANGUAGE plpgsql;
java: 只需写DAL有点区别,其它和上篇一样
/** * 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 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, Types.OTHER); 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 = "select * from getallschools()"; try ( CallableStatement cstmt = SqlHelper.getConnect().prepareCall(sql)) { //cstmt.registerOutParameter(1, Types.OTHER); //cstmt.execute(); ResultSet rs = cstmt.executeQuery();//(ResultSet) cstmt.getObject(1); while (rs.next()) { String id = rs.getString("school_id"); String name = rs.getString("school_name"); String telNo = rs.getString("school_tel_no"); schoolList.add(new School(id, name, telNo)); } } catch (SQLException e) { e.printStackTrace(); } return schoolList; } }
调用:
/** * encoding: utf-8 * 版权所有 2025 涂聚文有限公司 * 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 * 描述:https://jdbc.postgresql.org/download/ * # Author : geovindu,Geovin Du 涂聚文. * # IDE : IntelliJ IDEA 2023.1 Java JDK 21 * # database : Oracle 21c * # OS : window10 * # Datetime : 2025 - 2025/2/9 - 12:27 * # User : geovindu * # Product : IntelliJ IDEA * # Project : oracledemo * # File : Main.java 类 * # explain : 学习 **/ import Geovin.BLL.SchoolBLL; import Geovin.Model.School; public class Main { public static void main(String[] args) { SchoolBLL schoolBLL = new SchoolBLL(); //sql //schoolBLL.getAllSchools().forEach(System.out::println); System.out.println(schoolBLL.getSchoolById("U0001").getSchoolName()); schoolBLL.getAllProc().forEach(System.out::println); System.out.println("Hello Java world!"); } }
输出:
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)