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!");
    }
}

输出:

相关推荐
B站计算机毕业设计超人35 分钟前
计算机毕业设计制造业MES生产管理平台 MES 生产制造源码+文档+运行视频+讲解视频)
java·spring boot·mysql·eclipse·tomcat·maven·web
技术咖啡馆C1 小时前
二、通义灵码插件保姆级教学-IDEA(使用篇)
java·intellij-idea·通义灵码·ai助手·idea-plugin
星星点点洲2 小时前
【SpringBoot实现全局API限频】 最佳实践
java·spring boot·后端
华梦岚2 小时前
F#语言的学习路线
开发语言·后端·golang
linwq82 小时前
Java网络编程学习(一)
java·网络·学习
lllsure2 小时前
【快速入门】SpringMVC
java·后端·spring·mvc
翻晒时光2 小时前
24、深入理解与使用 Netty:Java 高性能网络编程的利器
java·网络
m0_748255652 小时前
DuckDB:pg_duckdb集成DuckDB和PostgreSQL实现高效数据分析
数据库·postgresql·数据分析
阿雄不会写代码2 小时前
数据库如何清空重置索引,MySQL PostgreSQL SQLite SQL Server
数据库·mysql·postgresql
lly2024062 小时前
XML 元素:结构化数据的基石
开发语言