java: framework from BLL、DAL、IDAL、MODEL、Factory, using Ms SQL server

sql:

/*create database geovindu
go

use geovindu;
go
*/


--基礎數據設置BasicDataSet
--書分類目錄kind 
--BookKindForm
IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].BookKindList') and OBJECTPROPERTY(id, N'IsUserTable') = 1) 
DROP TABLE BookKindList 
GO
create table BookKindList
(
	BookKindID INT IDENTITY(1,1) PRIMARY KEY,
	BookKindName nvarchar(500) not null,
	BookKindParent int null,
	BookKindCode varchar(100)   ---編號
)
GO

alter table BookKindList add BookKindCode varchar(100)

select * from BookKindList

insert into BookKindList(BookKindName,BookKindParent) values('六福書目錄',0)

insert into BookKindList(BookKindName,BookKindParent) values('文學',1)
insert into BookKindList(BookKindName,BookKindParent) values('設計藝術',1)
insert into BookKindList(BookKindName,BookKindParent) values('自然科學',1)

insert into BookKindList(BookKindName,BookKindParent) values('小說',2)
insert into BookKindList(BookKindName,BookKindParent) values('詩詞散曲',2)



IF EXISTS (SELECT * FROM sysobjects WHERE [name] = 'proc_Insert_BookKindList')
DROP PROCEDURE proc_Insert_BookKindList
GO
CREATE PROCEDURE proc_Insert_BookKindList
(
	--@BookKindID Int,
	@BookKindName NVarChar(1000),
    @BookKindCode varchar(100),
	@BookKindParent Int
)
AS
IF NOT EXISTS (SELECT * FROM BookKindList WHERE [BookKindName]=@BookKindName)
BEGIN
INSERT INTO BookKindList
(
	[BookKindName] ,
	[BookKindCode],
	[BookKindParent]
)
	VALUES
(
	@BookKindName ,
	@BookKindCode,
	@BookKindParent
)
END
GO



IF EXISTS (SELECT * FROM sysobjects WHERE [name] = 'proc_Insert_BookKindOut')
DROP PROCEDURE proc_Insert_BookKindOut
GO
CREATE PROCEDURE proc_Insert_BookKindOut
(
	@BookKindName NVarChar(1000),
    @BookKindCode varchar(100),
	@BookKindParent Int,
	@BookKindID Int output
)
AS
IF NOT EXISTS (SELECT * FROM BookKindList WHERE [BookKindName]=@BookKindName)
BEGIN
INSERT INTO BookKindList
(
	[BookKindName] ,
	[BookKindCode],
	[BookKindParent]
)
	VALUES
(
	@BookKindName ,
	@BookKindCode,
	@BookKindParent
)
SELECT @BookKindID=@@IDENTITY
END
GO




IF EXISTS (SELECT * FROM sysobjects WHERE [name] = 'proc_Update_BookKindList')
DROP PROCEDURE proc_Update_BookKindList
GO
CREATE PROCEDURE proc_Update_BookKindList
(
	@BookKindID Int,
	@BookKindName NVarChar(1000),
	@BookKindCode varchar(100),
	@BookKindParent Int
)
AS
IF NOT EXISTS (SELECT * FROM BookKindList WHERE [BookKindName]=@BookKindName)
BEGIN
UPDATE BookKindList
	SET
		[BookKindName]=@BookKindName ,
		[BookKindCode]=@BookKindCode,
		[BookKindParent]=@BookKindParent
	where
		[BookKindID]=@BookKindID
END
ELSE
BEGIN
UPDATE BookKindList
	SET
		--[BookKindName]=@BookKindName ,
		[BookKindCode]=@BookKindCode,
		[BookKindParent]=@BookKindParent
	where
		[BookKindID]=@BookKindID
END
GO


--刪除時,要刪相關的書藉信息
IF EXISTS (select * from sysobjects where [name] = 'proc_Delete_BookKindList')
DROP PROCEDURE proc_Delete_BookKindList
GO
CREATE PROCEDURE proc_Delete_BookKindList
(
	@BookKindID Int
)
as
DELETE
	BookKindList
	WHERE
		BookKindID = @BookKindID

GO

IF EXISTS (SELECT * FROM sysobjects WHERE [name] = 'proc_Select_BookKindList')
DROP PROCEDURE proc_Select_BookKindList
GO
CREATE PROCEDURE proc_Select_BookKindList
(
	@BookKindID Int
)
AS
SELECT * FROM BookKindList WHERE BookKindID = @BookKindID
GO

IF EXISTS (SELECT * FROM sysobjects WHERE [name] = 'proc_Select_BookKindListAll')
DROP PROCEDURE proc_Select_BookKindListAll
GO
CREATE PROCEDURE proc_Select_BookKindListAll
AS
SELECT * FROM BookKindList
GO

  

Model

/*
 * 版權所有 2021 塗聚文有限公司
 * 許可信息查看:
 * 描述:實體類,連接MySQL
 *
 * 歷史版本:  JDK 14.02
 * 數據庫:MSSQL Server 2019
 * IDE: IntelliJ IDEA 2021.2.3
 * OS: Windows 10 x64
 * 2021-12-12 創建者 geovindu
 * 2021-12-15 添加 Lambda
 * 2021-12-15 修改:date
 * 接口類
 * 2021-12-15 修改者:Geovin Du
 * 生成API幫助文檔的指令:
 *javadoc - -encoding Utf-8 -d apidoc BookKind.java
 * 配置文件:
 * driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
 *url=jdbc\:sqlserver\://localhost\:1433;databaseName=geovindu;
 *user=root
 *password=root
 *
 * */


package Geovin.Model;


/**
 * 實體類
 *@author geovindu  塗聚文 Geovin Du
 * @
 *
 * */
public class BookKind {
    //
    private int BookKindID;


    private String BookKindName;


    private int BookKindParent;


    private String BookKindCode;


    /**
     * @param
     * @return  得到ID
     * */
    public int getBookKindID() {
        return BookKindID;
    }
    /**
     * @param bookKindID 設置輸入參數
     *
     * */
    public void setBookKindID(int bookKindID) {
        this.BookKindID = bookKindID;
    }
    /**
     * @param
     * @return 得到目錄名稱
     * */
    public String getBookKindName() {
        return BookKindName;
    }
    /**
     * @param bookKindName 設置輸入參數
     *
     * */
    public void setBookKindName(String bookKindName) {
        this.BookKindName = bookKindName;
    }
    /**
     * @param
     * @return 得到父節點的值
     * */
    public int getBookKindParent() {
        return BookKindParent;
    }
    /**
     * @param bookKindParent 設置輸入參數
     *
     * */
    public void setBookKindParent(int bookKindParent) {
        this.BookKindParent = bookKindParent;
    }

    /**
     *
     * */
    public void setBookKindCode(String bookKindCode) {
        BookKindCode = bookKindCode;
    }
    /**
     *
     * */
    public String getBookKindCode() {
        return BookKindCode;
    }
}

  

DAL:

/*
 * 版權所有 2021 塗聚文有限公司
 * 許可信息查看:
 * 描述:DAL數據訪問層  數據業務層,連接MySQL
 *
 * 歷史版本:  JDK 14.02
 * 數據庫:MSSQL Server 2019
 * IDE: IntelliJ IDEA 2021.2.3
 * OS: Windows 10 x64
 * 2021-12-12 創建者 geovindu
 * 2021-12-15 添加 Geovin Du
 * 2021-12-15 修改:塗聚文
 * 接口類
 * 2021-12-15 修改者:Geovin Du
 * 生成API幫助文檔的指令:
 *javadoc - -encoding Utf-8 -d apidoc BookKindDAL.java
 * 配置文件:
 * driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
 *url=jdbc\:sqlserver\://localhost\:1433;databaseName=geovindu;   //jdbc\:mysql\://localhost\:3306/數據庫名稱
 *user=root
 *password=root
 *
 * */

//#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
package Geovin.DAL;


import Geovin.Interface.*;
import Geovin.Model.*;
import Geovin.Model.OutValue;
import Geovin.UtilitieDB.*;

import java.sql.*;
import java.util.ArrayList;

/**
 *#parse("File Header.java")
 * @apiNote 數據業務層
 * @deprecated
 * @Description
 * @projectName
 * @author  geovindu 塗聚文 Geovin Du
 * @date
 * @version 1.0
 *
 */

public class BookKindDAL implements BookKindInterface {



   // SqlHelper sqlHelper=new SqlHelper();
    /**
     * @param info 輸入一個實體
     * @return 返回int 1 是否插入一條記錄
     * @Description 添加一條記錄
     * */
    public int Add(BookKind info)
    {
        int ok=0;
        ResultSet resultSet = null;
        try
        {
            String sql = "{call proc_Insert_BookKindList(?,?,?)}";
            String[] parameters = {info.getBookKindName(), String.valueOf(info.getBookKindParent()),info.getBookKindCode() };
            SqlHelper.CallProc(sql,parameters);
            ok=1;
        }
        catch (Exception exception)
        {
            ok=0;
            exception.printStackTrace();
        }
        finally {
            SqlHelper.close(resultSet, SqlHelper.getCs(), SqlHelper.getConnection());
        }


        return ok;

    }

    /**
     * @param info  輸入實體
     * @return 返回值
     *
     * */
    public int AddOut(BookKind info)
    {
        int ok=0;
        ResultSet resultSet = null;
        try
        {
            String sql = "{call proc_Insert_BookKindOut(?,?,?,?)}"; //多少個參數,多少個問號,包括輸入,輸出參數後面,輸入,輸出的個數量要明晰
            String[] parameters = {info.getBookKindName(), String.valueOf(info.getBookKindParent()),info.getBookKindCode() };
            Integer[] out = { Types.INTEGER };
            CallableStatement cs=(CallableStatement)SqlHelper.CallProcOutInt(sql,parameters,out);
            ok= cs.getInt(3);

        }
        catch (Exception exception)
        {
            ok=0;
            exception.printStackTrace();
        }
        finally {
            SqlHelper.close(resultSet, SqlHelper.getCs(), SqlHelper.getConnection());
        }
        return ok;

    }
    /**
     * 添加返回值
     * @param info  輸入實體
     * @param outValue 返回值
     * @return 返回值
     *
     * */
    public int AddOut(BookKind info,OutValue outValue)
    {
        int ok=0;
        ResultSet resultSet = null;
        try
        {
            String sql = "{call proc_Insert_BookKindOut(?,?,?,?)}";
            String[] parameters = {info.getBookKindName(), String.valueOf(info.getBookKindParent()),info.getBookKindCode() };
            Integer[] out = { Types.INTEGER };
            CallableStatement cs=(CallableStatement)SqlHelper.CallProcOutInt(sql,parameters,out);
            outValue.setIntValue(cs.getInt(3));
            info.setBookKindID(cs.getInt(3));
            ok=cs.getInt(3);

        }
        catch (Exception exception)
        {
            ok=0;
            exception.printStackTrace();
        }
        finally {
            SqlHelper.close(resultSet, SqlHelper.getCs(), SqlHelper.getConnection());
        }
        return ok;

    }
    /**
     *添加返回值
     * @param info 一個實體記錄
     * @return
     *
     * */
    public int AddOut2(BookKind info)
    {
        int ok=0;
        ResultSet resultSet = null;
        try
        {
            String sql = "{call proc_Insert_BookKindOut(?,?,?,?)}";

            String[] parameters = {info.getBookKindName(), String.valueOf(info.getBookKindParent()),info.getBookKindCode(),""};
            Integer out =Types.INTEGER;
            info.setBookKindParent(out);
            SqlHelper.callProcInputAndOutPutString(sql,parameters);
            ok=out; //不是添加的ID值
        }
        catch (Exception exception)
        {
            ok=0;
            exception.printStackTrace();
        }
        finally {
            SqlHelper.close(resultSet, SqlHelper.getCs(), SqlHelper.getConnection());
        }
        return ok;

    }


    /**
     * #parse("更新記錄")
     * @param info  輸入實體
     * @return 返回參數
     *
     * */
    public int Update(BookKind info) {

        int ok=0;
        ResultSet resultSet = null;
        try
        {
            String sql = "{call proc_Update_BookKindList(?,?,?,?)}";
            String[] parameters = {String.valueOf(info.getBookKindID()), info.getBookKindName(), String.valueOf(info.getBookKindParent()),info.getBookKindCode() };
            SqlHelper.CallProc(sql,parameters);
            ok=1; //
        }
        catch (Exception exception)
        {
            ok=0;
            exception.printStackTrace();
        }
        finally {
            SqlHelper.close(resultSet, SqlHelper.getCs(), SqlHelper.getConnection());
        }
        return ok;



    }
    /**
     * 查詢一條記錄
     * @param id
     * @return BookKind 指定查找的ID記錄
     * @author geovindu
     * @date 2021-12-20
     * */
    public BookKind SelectSQLBookKindInfo(String id)
    {
        BookKind info=null;
        String sql = "SELECT * FROM BookKindList where BookKindID=?";
        String[] parameters = { id };
        try {
            info=new BookKind();
            ResultSet rs = SqlHelper.DuexecuteQuery(sql, parameters);
            while (rs.next()) {

                info.setBookKindID(rs.getInt("BookKindID"));
                info.setBookKindName(rs.getString("BookKindName"));
                info.setBookKindParent(rs.getInt("BookKindParent"));
                info.setBookKindCode(rs.getString("BookKindCode"));
            }
            //rs.close();
            //rs=null;
            //return info;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            SqlHelper.close(SqlHelper.getRs(), SqlHelper.getPs(), SqlHelper
                    .getConnection());
        }

        return info;
    }
    /**
     * 查詢所有記錄
     * @param
     * @return BookKind 所有記錄
     * @date 2021-12-20
     * @author geovindu
     * */
    public ArrayList<BookKind> SelectSQLBookKindAll()
    {

        ArrayList<BookKind> list=new ArrayList<BookKind>();

        String sql = "SELECT * FROM BookKindList";

        try {
            BookKind info=null;
            ResultSet rs = (ResultSet)SqlHelper.DuexecuteQuery(sql,null);
            while (rs.next()) {
                info=new BookKind();
                info.setBookKindID(rs.getInt("BookKindID"));
                info.setBookKindName(rs.getString("BookKindName"));
                info.setBookKindParent(rs.getInt("BookKindParent"));
                info.setBookKindCode(rs.getString("BookKindCode"));
                list.add(info);
            }
            //return info;
            rs.close();
            rs=null;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            SqlHelper.close(SqlHelper.getRs(), SqlHelper.getPs(), SqlHelper
                    .getConnection());
        }
        return list;
    }
    /**
     * 存儲過程查詢
     * @param
     *
     * */
    public  ArrayList<BookKind> SelectSProcBookKindAll()
    {

        Connection conn= null;
        //大多數情況下用preparedstatement替代statement
         PreparedStatement ps = null;
        ResultSet rs=null;
        ArrayList<BookKind> list=new ArrayList<BookKind>();

        String sql = "call proc_Select_BookKindListAll()";
        BookKind info=null;
        try {


            //1.
            //conn =MySqlHelper.getConnection();
            //CallableStatement statement = conn.prepareCall(sql);
            //statement.execute();
            //rs =statement.executeQuery();
             //2
             rs =SqlHelper.ExecuteQueryProcNoneData(sql);

            if(rs!=null) {
                while (rs.next()) {
                    info = new BookKind();
                    info.setBookKindID(rs.getInt("BookKindID"));
                    info.setBookKindName(rs.getString("BookKindName"));
                    info.setBookKindParent(rs.getInt("BookKindParent"));
                    info.setBookKindCode(rs.getString("BookKindCode"));
                    list.add(info);
                }
            }
            //return info;

            rs.close();
            rs=null;
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("no");
        } finally {
            SqlHelper.close(SqlHelper.getRs(), SqlHelper.getPs(), SqlHelper.getConnection());
        }
        return list;
    }


    /**
     * 存儲過程查詢
     *
     * */
    public  ArrayList<BookKind> SelectSProcToBookKindAll()
    {

        Connection conn= null;
        //大多數情況下用preparedstatement替代statement
        PreparedStatement ps = null;

        ResultSet rs=null;


        ArrayList<BookKind> list=new ArrayList<BookKind>();

        String sql = "{call proc_Select_BookKindListAll()}";
        BookKind info=null;
        try {
            //1
            //conn = DriverManager.getConnection(url,userName,password);//
            //System.out.println("連接成功");
            //conn=getConnection();

            //2.
           // conn =MySqlHelper.getConnection();
           // CallableStatement statement = conn.prepareCall(sql);
           // statement.execute();
           // rs =statement.executeQuery();

             //3.
             rs =SqlHelper.ExecuteQueryProcNoneData(sql);

            if(rs!=null) {
                while (rs.next()) {
                    info = new BookKind();
                    info.setBookKindID(rs.getInt("BookKindID"));
                    info.setBookKindName(rs.getString("BookKindName"));
                    info.setBookKindParent(rs.getInt("BookKindParent"));
                    info.setBookKindCode(rs.getString("BookKindCode"));
                    list.add(info);
                }
            }
            //return info;

             rs.close();
             rs=null;
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("no");
        } finally {
            SqlHelper.close(SqlHelper.getRs(), SqlHelper.getPs(), SqlHelper.getConnection());
        }
        return list;
    }

}

  

 

 

IDAL:

/*
 * 版權所有 2021 塗聚文有限公司
 * 許可信息查看:
 * 描述:Interface 接口層,連接MySQL
 *
 * 歷史版本:  JDK 14.02
 * 數據庫:MSSQL Server 2019
 * IDE: IntelliJ IDEA 2021.2.3
 * OS: Windows 10 x64
 * 2021-12-12 創建者 geovindu
 * 2021-12-15 添加 Lambda
 * 2021-12-15 修改:date
 * 接口類
 * 2021-12-15 修改者:Geovin Du
 * 生成API幫助文檔的指令:
 *javadoc - -encoding Utf-8 -d apidoc BookKindInterface.java
 * 配置文件:
 * driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
 *url=jdbc\:sqlserver\://localhost\:1433;databaseName=geovindu;   ///jdbc\:mysql\://localhost\:3306/數據庫名稱
 *user=root
 *password=root
 *
 * */


package Geovin.Interface;

import Geovin.Model.BookKind;
import Geovin.Model.OutValue;

import java.util.ArrayList;

/**
 * #parse("接口")
 * @author geovindu 塗聚文 Geovin Du
 * @version 1.0
 * */

public interface BookKindInterface {


    /**
     * @param info
     * @return
     * */
    public int Add(BookKind info);
    /**
     *
     * @param info
     * @return
     *
     * */
    public int AddOut(BookKind info);
    /**
     *
     *
     * */
    public int AddOut(BookKind info, OutValue outValue);
    /**
     *
     * @param info
     * @return
     *
     * */
    public int Update(BookKind info);
    /**
     *
     * @param id
     * @return
     *
     * **/
    public BookKind SelectSQLBookKindInfo(String id);

    /**
     *
     * @param
     * @return
     *
     * */
    public ArrayList<BookKind> SelectSQLBookKindAll();
    /**
     *
     * @param
     * @return
     *
     * */
    public ArrayList<BookKind> SelectSProcBookKindAll();

    public  ArrayList<BookKind> SelectSProcToBookKindAll();

}

  

Factory:

/*
 * 版權所有 2021 塗聚文有限公司
 * 許可信息查看:
 * 描述:工廠層,抽象工廠 連接MySQL
 *
 * 歷史版本:  JDK 14.02
 * 數據庫:MSSQL Server 2019

* IDE: IntelliJ IDEA 2021.2.3 * OS: Windows 10 x64 * 2021-12-12 創建者 geovindu * 2021-12-15 添加 Lambda * 2021-12-15 修改:date * 接口類 * 2021-12-15 修改者:Geovin Du * 生成API幫助文檔的指令: *javadoc - -encoding Utf-8 -d apidoc BookKind.java * 配置文件: * driver=com.microsoft.sqlserver.jdbc.SQLServerDriver *url=jdbc\:sqlserver\://localhost\:1433;databaseName=geovindu; //jdbc\:mysql\://localhost\:3306/數據庫名稱 *user=root *password=root * * */ package Geovin.Factory; import Geovin.DAL.BookKindDAL; import Geovin.Interface.BookKindInterface; /** * #parse("抽象工廠") * @author geovindu 塗聚文 Geovin Du * @version 1.0 * * */ public class AbstractFactory { /** * * * */ public static BookKindInterface CreateBookKind() { BookKindInterface iBookKindInterface=new BookKindDAL(); return iBookKindInterface; } }

  

BLL:

/*
 * 版權所有 2021 塗聚文有限公司
 * 許可信息查看:
 * 描述:業務邏輯層,連接MySQL
 *
 * 歷史版本:  JDK 14.02
 * 數據庫:MSSQL Server 2019
 * IDE: IntelliJ IDEA 2021.2.3
 * OS: Windows 10 x64
 * 2021-12-12 創建者 geovindu
 * 2021-12-15 添加 Lambda
 * 2021-12-15 修改:date
 * 接口類
 * 2021-12-15 修改者:Geovin Du
 * 生成API幫助文檔的指令:
 *javadoc - -encoding Utf-8 -d apidoc BookKind.java
 * 配置文件:
 * driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
 *url=jdbc\:sqlserver\://localhost\:1433;databaseName=geovindu;  //jdbc\:mysql\://localhost\:1433/數據庫名稱
 *user=root
 *password=root
 *
 * */


package Geovin.BLL;


import Geovin.Factory.AbstractFactory;
import Geovin.Model.*;
import Geovin.Model.OutValue;
import Geovin.Interface.*;
import java.util.ArrayList;

/**
 * #parse("業務邏輯層")
 * @author geovindu 塗聚文 Geovin Du
 * @
 * */
public class BookKindBLL {


    //
    private  static BookKindInterface dal=AbstractFactory.CreateBookKind();

    /**
     * @param info 輸入一個實體
     * @return 返回int 1 是否插入一條記錄
     * */
    public int Add(BookKind info)
    {
       return dal.Add(info);
    }
    /**
     * @param info  輸入實體
     * @return 返回值
     * */
    public int AddOut(BookKind info)
    {
        return dal.AddOut(info);
    }
    /**
     * 添加返回值
     * @param info  輸入實體
     * @param outValue 返回值
     * @return 返回值
     * */
    public int AddOut(BookKind info,OutValue outValue){return dal.AddOut(info,outValue);}
    /**
     *添加返回值
     * @param info 一個實體記錄
     * @return
     * */
    public int Update(BookKind info)
    {
        return dal.Update(info);
    }
    /**
     * 查詢一條記錄
     * @param id
     * @return BookKind 指定查找的ID記錄
     * */
    public BookKind SelectSQLBookKindInfo(String id)
    {
        return dal.SelectSQLBookKindInfo(id);
    }
    /**
     * 查詢所有記錄
     * @param
     * @return BookKind 所有記錄
     * */
    public ArrayList<BookKind> SelectSQLBookKindAll()
    {
        return dal.SelectSQLBookKindAll();
    }
    /**
     * 存儲過程查詢
     * @param
     * */
    public ArrayList<BookKind> SelectSProcBookKindAll(){ return dal.SelectSProcBookKindAll();}
    /**
     * 存儲過程查詢
     * */
    public  ArrayList<BookKind> SelectSProcToBookKindAll(){return dal.SelectSProcToBookKindAll();}
}

  

測試:

        BookKindBLL bookKindBLL=new BookKindBLL();
        String id="2";
        BookKind info=bookKindBLL.SelectSQLBookKindInfo(id);
        System.out.println("Id:"+id+",名稱:"+info.getBookKindName()+"父節點:"+info.getBookKindParent());

        ArrayList<BookKind> arrayList=new ArrayList<BookKind>();
        arrayList=bookKindBLL.SelectSProcToBookKindAll();
        for(BookKind bookKind:arrayList)
        {
            System.out.println("Id:"+bookKind.getBookKindID()+",名稱:"+bookKind.getBookKindName()+"父節點:"+bookKind.getBookKindParent()+"編碼:"+bookKind.getBookKindCode());
        }

  

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章