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 ArrayListSelectSQLBookKindAll() { ArrayList list=new ArrayList (); 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 SelectSProcBookKindAll() { Connection conn= null; //大多数情况下用preparedstatement替代statement PreparedStatement ps = null; ResultSet rs=null; ArrayList list=new ArrayList (); 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 SelectSProcToBookKindAll() { Connection conn= null; //大多数情况下用preparedstatement替代statement PreparedStatement ps = null; ResultSet rs=null; ArrayList list=new ArrayList (); 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 ArrayListSelectSQLBookKindAll(); /** * * @param * @return * * */ public ArrayList SelectSProcBookKindAll(); public ArrayList 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 ArrayListSelectSQLBookKindAll() { return dal.SelectSQLBookKindAll(); } /** * 存储过程查询 * @param * */ public ArrayList SelectSProcBookKindAll(){ return dal.SelectSProcBookKindAll();} /** * 存储过程查询 * */ public ArrayList 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()); ArrayListarrayList=new ArrayList (); arrayList=bookKindBLL.SelectSProcToBookKindAll(); for(BookKind bookKind:arrayList) { System.out.println("Id:"+bookKind.getBookKindID()+",名称:"+bookKind.getBookKindName()+"父节点:"+bookKind.getBookKindParent()+"编码:"+bookKind.getBookKindCode()); }