java: framework from BLL、DAL、IDAL、MODEL、Factory using postgresql 17.0

postgresql sql:

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有点区别,其它和上篇基本一样

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: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;
    }
 
}

调用:

java 复制代码
/**
 * 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!");
    }
}

输出:

相关推荐
Predestination王瀞潞2 小时前
IO操作(Num22)
开发语言·c++
瓯雅爱分享3 小时前
Java+Vue构建的采购招投标一体化管理系统,集成招标计划、投标审核、在线竞价、中标公示及合同跟踪功能,附完整源码,助力企业实现采购全流程自动化与规范化
java·mysql·vue·软件工程·源代码管理
宋恩淇要努力4 小时前
C++继承
开发语言·c++
沿着路走到底5 小时前
python 基础
开发语言·python
沐知全栈开发6 小时前
C# 委托(Delegate)
开发语言
mit6.8246 小时前
[C# starter-kit] 命令/查询职责分离CQRS | MediatR |
java·数据库·c#
诸神缄默不语6 小时前
Maven用户设置文件(settings.xml)配置指南
xml·java·maven
任子菲阳6 小时前
学Java第三十四天-----抽象类和抽象方法
java·开发语言
学Linux的语莫7 小时前
机器学习数据处理
java·算法·机器学习
找不到、了7 小时前
JVM的即时编译JIT的介绍
java·jvm