中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

商城網(wǎng)站源碼下載全網(wǎng)搜索引擎

商城網(wǎng)站源碼下載,全網(wǎng)搜索引擎,北京工程建設(shè)信息交易網(wǎng),做國(guó)外網(wǎng)站什么好項(xiàng)目代碼 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter26 一、需求說(shuō)明 滿漢樓項(xiàng)目功能多,界面復(fù)雜,涉及到復(fù)雜的awt和swing技術(shù)和事件編程,做如下調(diào)整: 1.去掉界面和事件處理(工作中使用很少),使…

項(xiàng)目代碼

https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter26

一、需求說(shuō)明

滿漢樓項(xiàng)目功能多,界面復(fù)雜,涉及到復(fù)雜的awt和swing技術(shù)和事件編程,做如下調(diào)整:?

1.去掉界面和事件處理(工作中使用很少),使用控制臺(tái)界面

2.完成滿漢樓項(xiàng)目的登錄、訂座、點(diǎn)餐和結(jié)賬、查看賬單等功能.

3.在實(shí)際工作中,獨(dú)立完成項(xiàng)目新功能非常重要,這是鍛煉編程能力和思想的重要途徑

1.用戶登錄

2.顯示餐桌的狀態(tài)

3.預(yù)定

4.顯示菜品

5.點(diǎn)餐

6.查看賬單

7.結(jié)賬

?二、項(xiàng)目設(shè)計(jì)

三、功能實(shí)現(xiàn)

1.顯示主菜單、二級(jí)菜單和退出系統(tǒng)功能

public void mainMenu(){while (loop){System.out.println("==============滿漢樓===============");System.out.println("\t\t1.登錄滿漢樓");System.out.println("\t\t2.退出滿漢樓");System.out.println("請(qǐng)輸入你的選擇");key = Utility.readString(1);switch (key){case "1":System.out.println("輸入員工號(hào):");String id = Utility.readString(50);System.out.println("輸入密 碼");String pwd = Utility.readString(50);//到數(shù)據(jù)庫(kù)去判斷if("123".equals(pwd)){System.out.println("===========登錄成功===========");while(loop){System.out.println("=========滿漢樓(二級(jí)菜單)==========");System.out.println("\t\t1 顯示餐桌狀態(tài)");System.out.println("\t\t2 預(yù)定餐桌狀態(tài)");System.out.println("\t\t3 顯示所有菜品");System.out.println("\t\t4 點(diǎn)餐服務(wù)");System.out.println("\t\t5 查看賬單");System.out.println("\t\t6 結(jié)賬");System.out.println("\t\t9 退出滿漢樓");key = Utility.readString(1);switch (key){case "1":System.out.println("顯示餐桌狀態(tài)");break;case "2":System.out.println("預(yù)定餐桌");break;case "3":System.out.println("顯示所有菜品");break;case "4":System.out.println("點(diǎn)餐服務(wù)");break;case "5":System.out.println("查看賬單");break;case "6":System.out.println("結(jié)賬");break;case "9":loop = false;break;default:System.out.println("你的輸入有誤 請(qǐng)重新輸入");}}}else{System.out.println("===========登錄失敗===========");}break;case "2":System.out.println("2.退出滿漢樓");loop = false;break;default:System.out.println("輸入錯(cuò)誤錯(cuò)誤");}}System.out.println("退出滿漢樓");}

2.用戶登錄

CREATE DATABASE mhl
#用戶表
CREATE TABLE employee (id INT PRIMARY KEY AUTO_INCREMENT, #自增empId VARCHAR(50) UNIQUE NOT NULL DEFAULT '',#員工號(hào)pwd CHAR(32) NOT NULL DEFAULT '',#密碼md5NAME VARCHAR(50) NOT NULL DEFAULT '',#姓名job VARCHAR(50) NOT NULL DEFAULT '' #崗位
)CHARSET=utf8; DROP TABLE employee
#添加測(cè)試數(shù)據(jù)
INSERT INTO employee VALUES(NULL, '6668612', MD5('123456'), '張三豐', '經(jīng)理');
INSERT INTO employee VALUES(NULL, '6668622', MD5('123456'),'小龍女', '服務(wù)員');
INSERT INTO employee VALUES(NULL, '6668633', MD5('123456'), '張無(wú)忌', '收銀員');
INSERT INTO employee VALUES(NULL, '666666', MD5('123456'), '老韓', '經(jīng)理');
SELECT * FROM employee

/*** @author 銀小海* @version 1.0* @email yinhai14@qq.com* 該類(lèi)調(diào)用EmployeeDAO對(duì)象完成對(duì)表的各種操作*/
public class EmployeeService {//定義一個(gè)EmployeeDAO屬性private EmployeeDAO employeeDAO = new EmployeeDAO();//方法 根據(jù)empId和pwd返回一個(gè)Employee對(duì)象public Employee getEmployeeByIdAndPwd(String empId,String pwd){return employeeDAO.querySingle("select * from employee where empId=? and pwd=md5(?)", Employee.class, empId, pwd);}
}

?該服務(wù)并不直接修改數(shù)據(jù)庫(kù),而是通過(guò)DAO調(diào)用JDBCDruid修改數(shù)據(jù)庫(kù)

             if(employee != null){System.out.println("===========登錄成功(" + employee.getName() + ")===========");while(loop){

3.顯示餐桌狀態(tài)?

1.創(chuàng)建新的餐位表

2.domain里設(shè)計(jì)一個(gè)類(lèi)對(duì)應(yīng)該表

3.DAO類(lèi)對(duì)表crud

4.service調(diào)用DAO修改

-- 創(chuàng)建diningTable 表(id, state , orderName, orderTel ....)CREATE TABLE diningTable (id INT PRIMARY KEY AUTO_INCREMENT, #自增, 表示餐桌編號(hào)state VARCHAR(20) NOT NULL DEFAULT '',#餐桌的狀態(tài)orderName VARCHAR(50) NOT NULL DEFAULT '',#預(yù)訂人的名字orderTel VARCHAR(20) NOT NULL DEFAULT ''
)CHARSET=utf8; 
#測(cè)試數(shù)據(jù)
INSERT INTO diningTable VALUES(NULL, '空','','');
INSERT INTO diningTable VALUES(NULL, '空','','');
INSERT INTO diningTable VALUES(NULL, '空','','');
SELECT * FROM diningTable

2.設(shè)計(jì)一個(gè)類(lèi)對(duì)應(yīng) 該表?

/*** @author 銀小海* @version 1.0* @email yinhai14@qq.com* 一個(gè)javabean 和diningTable表對(duì)應(yīng)* 	id INT PRIMARY KEY AUTO_INCREMENT, #自增, 表示餐桌編號(hào)* 	state VARCHAR(20) NOT NULL DEFAULT '',#餐桌的狀態(tài)* 	orderName VARCHAR(50) NOT NULL DEFAULT '',#預(yù)訂人的名字* 	orderTel VARCHAR(20) NOT NULL DEFAULT ''*/public class DiningTable {private Integer id;private String state;private String orderName;private String orderTel;public DiningTable() {}public DiningTable(Integer id, String state, String orderName, String orderTel) {this.id = id;this.state = state;this.orderName = orderName;this.orderTel = orderTel;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getState() {return state;}public void setState(String state) {this.state = state;}public String getOrderName() {return orderName;}public void setOrderName(String orderName) {this.orderName = orderName;}public String getOrderTel() {return orderTel;}public void setOrderTel(String orderTel) {this.orderTel = orderTel;}@Overridepublic String toString() {return id + "\t\t\t" + state;}
}

4.

public class DiningTableService {//定義一個(gè)DiningTableDAO對(duì)象private DiningTableDAO diningTableDAO = new DiningTableDAO();//返回所有餐桌的信息public List<DiningTable> list(){return diningTableDAO.queryMulti("select id,state from diningTable", DiningTable.class);}
}

4.訂座

功能說(shuō)明如果該餐桌處于已經(jīng)預(yù)定或者就餐狀態(tài),給出提示

1.在DiningTableService內(nèi)添加對(duì)應(yīng)方法

//根據(jù)id 查詢(xún)對(duì)應(yīng)的DiningTable對(duì)象 如果返回null 表示id編號(hào)對(duì)應(yīng)餐桌不存在public DiningTable getDiningTableById(int id){//把sql語(yǔ)句放到查詢(xún)分析器去測(cè)試一下return diningTableDAO.querySingle("select * from diningTable where id = ?",DiningTable.class,id);}//如果餐桌可以預(yù)定 調(diào)用方法對(duì)其狀態(tài)進(jìn)行更新public boolean orderDiningTable(int id,String orderName,String orderTel) {int dml =diningTableDAO.dml("update diningTable set state = '已經(jīng)" +"預(yù)定',orderName = ?,orderTel=? where id = ?", orderName, orderTel, id);return dml > 0;}

?2.在view內(nèi)添加判斷用戶輸入方法,并在對(duì)應(yīng)階段調(diào)用該方法即可

//預(yù)定餐桌public void orderDiningTable(){System.out.println("=========預(yù)定餐桌==========");System.out.println("請(qǐng)選擇要預(yù)定的餐桌的編號(hào)(-1退出)");int orderId = Utility.readInt();if(orderId == -1){return;}DiningTable diningTable = diningTableService.getDiningTableById(orderId);if(diningTable == null){ //說(shuō)明不存在System.out.println("==========該餐桌不存在=========");return;}char key = Utility.readConfirmSelection();//輸入Y/Nif (key == 'Y'){//要預(yù)定就調(diào)用方法 如果為null該對(duì)象不存在if(!("空".equals(diningTable.getState()))){System.out.println("==========該餐桌已被預(yù)定或就餐中=========");return;}System.out.println("預(yù)訂人的名字:");String orderName = Utility.readString(50);System.out.println("預(yù)訂人的電話:");String orderTel = Utility.readString(50);if(diningTableService.orderDiningTable(orderId,orderName,orderTel)){System.out.println("預(yù)定餐桌成功");}else{System.out.println("預(yù)定餐桌失敗");}//過(guò)關(guān)斬將}else{System.out.println("=========取消預(yù)定餐桌==========");}}

5.顯示菜品

1.需要?jiǎng)?chuàng)建一個(gè)新的菜單表

2.需要在java內(nèi)建立domain類(lèi)

3.需要?jiǎng)?chuàng)建菜單的DAO類(lèi)

4.需要service組織sql并調(diào)用DAO

-- 創(chuàng)建menu表(id, name, type, price)
#菜譜
CREATE TABLE menu (id INT PRIMARY KEY AUTO_INCREMENT, #自增主鍵,作為菜譜編號(hào)(唯一)NAME VARCHAR(50) NOT NULL DEFAULT '',#菜品名稱(chēng)TYPE VARCHAR(50) NOT NULL DEFAULT '', #菜品種類(lèi)price DOUBLE NOT NULL DEFAULT 0#價(jià)格
)CHARSET=utf8; 
#測(cè)試數(shù)據(jù)
INSERT INTO menu VALUES(NULL, '八寶飯', '主食', 10);
INSERT INTO menu VALUES(NULL, '叉燒包', '主食', 20);
INSERT INTO menu VALUES(NULL, '宮保雞丁', '熱菜', 30);
INSERT INTO menu VALUES(NULL, '山藥撥魚(yú)', '涼菜', 14);
INSERT INTO menu VALUES(NULL, '銀絲卷', '甜食', 9);
INSERT INTO menu VALUES(NULL, '水煮魚(yú)', '熱菜', 26);
INSERT INTO menu VALUES(NULL, '甲魚(yú)湯', '湯類(lèi)', 100);
INSERT INTO menu VALUES(NULL, '雞蛋湯', '湯類(lèi)', 16);

2.在java內(nèi)創(chuàng)建domain的Menu類(lèi)?對(duì)應(yīng)表的對(duì)象

/*** @author 銀小海* @version 1.0* @email yinhai14@qq.com* 該javabean和 menu 表對(duì)應(yīng)*  id INT PRIMARY KEY AUTO_INCREMENT, #自增, 表示餐桌編號(hào)* 	state VARCHAR(20) NOT NULL DEFAULT '',#餐桌的狀態(tài)* 	orderName VARCHAR(50) NOT NULL DEFAULT '',#預(yù)訂人的名字* 	orderTel VARCHAR(20) NOT NULL DEFAULT ''*/
public class Menu {private Integer id;private String name;private String type;private Double price;public Menu(){//無(wú)參構(gòu)造器}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getType() {return type;}public void setType(String type) {this.type = type;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}public Menu(Integer id, String name, String type, Double price) {this.id = id;this.name = name;this.type = type;this.price = price;}
}

3.DAO繼承BasicDAO

4.service類(lèi)?組織sql調(diào)用DAO

public class MenuService {private MenuDAO menuDAO = new MenuDAO();//返回所有的菜品public List<Menu> list(){return menuDAO.queryMulti("select * from menu",Menu.class);}}

在view內(nèi)編寫(xiě)方法調(diào)用service類(lèi)的方法

public void listMenu(){List<Menu> list = menuService.list();System.out.println("\n菜品編號(hào)\t\t菜品名\t\t類(lèi)別\t\t價(jià)格");for (Menu menu : list) {System.out.println(menu);}System.out.println("=========顯示完畢==========");
}

6.點(diǎn)餐

功能說(shuō)明要求對(duì)餐桌號(hào),菜品編號(hào),做合理性校驗(yàn),如果不合理,給出提示信息

餐桌號(hào)?菜品號(hào)?檢驗(yàn)是否合理,點(diǎn)餐成功,需要修改餐桌狀態(tài),生成賬單

1.需要?jiǎng)?chuàng)建一個(gè)新的賬單表

2.需要在java內(nèi)建立domain類(lèi)

3.需要?jiǎng)?chuàng)建菜單的DAO類(lèi)

4.需要service組織sql并調(diào)用DAO

1.新建賬單表


#增加表 bill 賬單表(id, billId, menuId, nums, billDate, money, state, diningTableId )
#賬單流水, 考慮可以分開(kāi)結(jié)賬, 并考慮將來(lái)分別統(tǒng)計(jì)各個(gè)不同菜品的銷(xiāo)售情況
CREATE TABLE bill (id INT PRIMARY KEY AUTO_INCREMENT, #自增主鍵billId VARCHAR(50) NOT NULL DEFAULT '',#賬單號(hào)可以按照自己規(guī)則生成 UUIDmenuId INT NOT NULL DEFAULT 0,#菜品的編號(hào), 也可以使用外鍵nums INT NOT NULL DEFAULT 0,#份數(shù)money DOUBLE NOT NULL DEFAULT 0, #金額diningTableId INT NOT NULL DEFAULT 0, #餐桌billDate DATETIME NOT NULL ,#訂單日期state VARCHAR(50) NOT NULL DEFAULT '' # 狀態(tài) '未結(jié)賬' , '已經(jīng)結(jié)賬', '掛單','現(xiàn)金','支付寶','壞賬'
)CHARSET=utf8;SELECT * FROM bill;

2.創(chuàng)建domain類(lèi)?javabean

/*** @author 銀小海* @version 1.0* @email yinhai14@qq.com* 	id INT PRIMARY KEY AUTO_INCREMENT, #自增主鍵* 	billId VARCHAR(50) NOT NULL DEFAULT '',#賬單號(hào)可以按照自己規(guī)則生成 UUID* 	menuId INT NOT NULL DEFAULT 0,#菜品的編號(hào), 也可以使用外鍵* 	nums INT NOT NULL DEFAULT 0,#份數(shù)* 	money DOUBLE NOT NULL DEFAULT 0, #金額* 	diningTableId INT NOT NULL DEFAULT 0, #餐桌* 	billDate DATETIME NOT NULL ,#訂單日期* 	state VARCHAR(50) NOT NULL DEFAULT '' # 狀態(tài) '未結(jié)賬' , '已經(jīng)結(jié)賬', '掛單','現(xiàn)*/
public class Bill {private Integer id;private String billId;private Integer menuId;private Integer nums;private Double money;private Integer diningTableId;private Date billDate;private String state;public Bill() {}public Bill(Integer id, String billId, Integer menuId, Integer nums, Double money, Integer diningTableId, Date billDate, String state) {this.id = id;this.billId = billId;this.menuId = menuId;this.nums = nums;this.money = money;this.diningTableId = diningTableId;this.billDate = billDate;this.state = state;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getBillId() {return billId;}public void setBillId(String billId) {this.billId = billId;}public Integer getMenuId() {return menuId;}public void setMenuId(Integer menuId) {this.menuId = menuId;}public Integer getNums() {return nums;}public void setNums(Integer nums) {this.nums = nums;}public Double getMoney() {return money;}public void setMoney(Double money) {this.money = money;}public Integer getDiningTableId() {return diningTableId;}public void setDiningTableId(Integer diningTableId) {this.diningTableId = diningTableId;}public Date getBillDate() {return billDate;}public void setBillDate(Date billDate) {this.billDate = billDate;}public String getState() {return state;}public void setState(String state) {this.state = state;}@Overridepublic String toString() {return  id +"\t\t" + menuId +"\t\t\t" + nums +"\t\t\t" + money +"\t" + diningTableId +"\t\t" + billDate +"\t\t" + state ;}
}

3.編寫(xiě)賬單服務(wù)類(lèi)?該方法還需要其他服務(wù)類(lèi)輔助?因此也需要再其他服務(wù)類(lèi)內(nèi)增加方法

public class BillService {//定義BillDAO屬性private BillDAO billDAO = new BillDAO();//需要定義另一個(gè)service獲得菜單用來(lái)計(jì)算金額private MenuService menuService = new MenuService();//需要定義另一個(gè)service更改餐桌的狀態(tài)private DiningTableService diningTableService = new DiningTableService();//編寫(xiě)點(diǎn)餐的方法//1.生成賬單 2. 需要更新對(duì)應(yīng)餐桌狀態(tài) 3.如果成功返回true 否則返回falsepublic boolean orderMenu(int menuId,int nums,int diningTableId){//生成一個(gè)賬單號(hào)UUIDString billUUID = UUID.randomUUID().toString();//將這個(gè)賬單生成到bill表 要直接計(jì)算賬單的金額 也就是獲得menu對(duì)象int dml = billDAO.dml("insert into bill values" +"(null,?,?,?,?,?,now(),'未結(jié)賬')", billUUID, menuId, nums, menuService.getMenuId(menuId).getPrice() * nums, diningTableId);if(dml <= 0){return false;}//需要更新餐桌狀態(tài)return diningTableService.updateDiningTableState(diningTableId,"就餐中");}
}

4.在view調(diào)用該服務(wù)類(lèi)

 //完成點(diǎn)餐public void orderMenu() {System.out.println("==============點(diǎn)餐服務(wù)============");System.out.print("請(qǐng)輸入點(diǎn)餐的桌號(hào)(-1退出): ");int orderDiningTableId = Utility.readInt();if (orderDiningTableId == -1) {System.out.println("==============取消點(diǎn)餐============");return;}System.out.print("請(qǐng)輸入點(diǎn)餐的菜品號(hào)(-1退出): ");int orderMenuId = Utility.readInt();if (orderMenuId == -1) {System.out.println("==============取消點(diǎn)餐============");return;}System.out.print("請(qǐng)輸入點(diǎn)餐的菜品量(-1退出): ");int orderNums = Utility.readInt();if (orderNums == -1) {System.out.println("==============取消點(diǎn)餐============");return;}//驗(yàn)證餐桌號(hào)是否存在.DiningTable diningTable = diningTableService.getDiningTableById(orderDiningTableId);if (diningTable == null) {System.out.println("==============餐桌號(hào)不存在============");return;}//驗(yàn)證菜品編號(hào)Menu menu = menuService.getMenuId(orderMenuId);if (menu == null) {System.out.println("==============菜品號(hào)不存在============");return;}//點(diǎn)餐if (billService.orderMenu(orderMenuId, orderNums, orderDiningTableId)) {System.out.println("==============點(diǎn)餐成功============");} else {System.out.println("==============點(diǎn)餐失敗============");}}

7.查看賬單

1.billDao獲得bill對(duì)象

2.service編寫(xiě)方法調(diào)用billDAO獲得bill對(duì)象

3.view調(diào)用該service方法

2.service調(diào)用DAO獲得list數(shù)組

public List<Bill> list(){return billDAO.queryMulti("select * from bill",Bill.class);}

3.view顯示賬單

public void listBill() {List<Bill> bills = billService.list();System.out.println("\n編號(hào)\t\t菜品號(hào)\t\t菜品量\t\t金額\t\t桌號(hào)\t\t日期\t\t\t\t\t\t\t狀態(tài)");for (Bill bill : bills) {System.out.println(bill);}System.out.println("==============顯示完畢============");}

?8.結(jié)賬

(1)對(duì)餐桌號(hào)進(jìn)行校驗(yàn)????????(2)修改bill表的state????????(3)修改diningTable信息? ? ? ? (4)不需要增加表和類(lèi)

1.在?service類(lèi)內(nèi)查看是否有未結(jié)賬?或者餐桌是否存在 (校驗(yàn))

//查看某個(gè)產(chǎn)值是否有未結(jié)賬的賬單public boolean hasPayBillByDiningTableId(int diningTableId) {Bill bill =billDAO.querySingle("SELECT * FROM bill WHERE diningTableId=? AND state = '未結(jié)賬' LIMIT 0, 1", Bill.class, diningTableId);return bill != null;}//完成結(jié)賬[如果餐桌存在,并且該餐桌有未結(jié)賬的賬單]//如果成功,返回true, 失敗返回 falsepublic boolean payBill(int diningTableId, String payMode) {//如果這里使用事務(wù)的話,需要用ThreadLocal來(lái)解決 , 框架中比如mybatis 提供了事務(wù)支持//1. 修改bill表int update = billDAO.dml("update bill set state=? where diningTableId=? and state='未結(jié)賬'", payMode, diningTableId);if(update <= 0) { //如果更新沒(méi)有成功,則表示失敗...return false;}//2. 修改diningTable表//注意:不要直接在這里操作,而應(yīng)該調(diào)用DiningTableService 方法,完成更新,體現(xiàn)各司其職if(!diningTableService.updateDiningTableToFree(diningTableId, "空")) {return false;}return true;}

2.修改diningTable為空閑

//需要提供一個(gè)更新餐桌狀態(tài)為空閑的方法public boolean updateDiningTableToFree(int id,String state){int dml = diningTableDAO.dml("update diningTable set state=?,orderName = '',orderTel = '' where id=?", state, id);return dml > 0;}

?3.在view內(nèi)定義方法調(diào)用service方法

//完成結(jié)賬public void payBill() {System.out.println("==============結(jié)賬服務(wù)============");System.out.print("請(qǐng)選擇要結(jié)賬的餐桌編號(hào)(-1退出): ");int diningTableId = Utility.readInt();if (diningTableId == -1) {System.out.println("=============取消結(jié)賬============");return;}//驗(yàn)證餐桌是否存在DiningTable diningTable = diningTableService.getDiningTableById(diningTableId);if (diningTable == null) {System.out.println("=============結(jié)賬的餐桌不存在============");return;}//驗(yàn)證餐桌是否有需要結(jié)賬的賬單if (!billService.hasPayBillByDiningTableId(diningTableId)) {System.out.println("=============該餐位沒(méi)有未結(jié)賬賬單============");return;}System.out.print("結(jié)賬方式(現(xiàn)金/支付寶/微信)回車(chē)表示退出: ");String payMode = Utility.readString(20, "");//說(shuō)明如果回車(chē),就是返回 ""if ("".equals(payMode)) {System.out.println("=============取消結(jié)賬============");return;}char key = Utility.readConfirmSelection();if (key == 'Y') { //結(jié)賬//調(diào)用我們寫(xiě)的方法if (billService.payBill(diningTableId, payMode)) {System.out.println("=============完成結(jié)賬============");} else {System.out.println("=============結(jié)賬失敗============");}} else {System.out.println("=============取消結(jié)賬============");}}

四、進(jìn)行代碼拓展?

1.多表查詢(xún)的需求

我們可以再增加一個(gè)MultableBean,跟多張表進(jìn)行映射,所以要有一個(gè)MultableBeanDAO,然后調(diào)用該DAO

另一個(gè)方案

DBUtils數(shù)據(jù)庫(kù)連接池多表連接查詢(xún)_利用數(shù)據(jù)池連接數(shù)據(jù)庫(kù)多個(gè)表-CSDN博客

1.創(chuàng)建bean表

public class MultiTableBean {private Integer id;private String billId;private Integer menuId;private Integer nums;private Double money;private Integer diningTableId;private Date billDate;private String state;//增加一個(gè)來(lái)自menu表的列 name//思考 這里的屬性名是否一定要和表的列名保持一致.//答: 可以不一致,但是需要sql做相應(yīng)的修改, 規(guī)范需要保持一致.private String name;//增加來(lái)自menu表的列 priceprivate Double price;//默認(rèn)值 nulllpublic MultiTableBean() {System.out.println("反射調(diào)用....");}//    public MultiTableBean(Integer id, String billId, Integer menuId, Integer nums, Double money, Integer diningTableId, Date billDate, String state, String name, Double price) {
//        this.id = id;
//        this.billId = billId;
//        this.menuId = menuId;
//        this.nums = nums;
//        this.money = money;
//        this.diningTableId = diningTableId;
//        this.billDate = billDate;
//        this.state = state;
//        this.name = name;
//        this.price = price;
//    }//給price生成setter 和 getterpublic Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}//給name生成setter 和 getterpublic String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getBillId() {return billId;}public void setBillId(String billId) {this.billId = billId;}public Integer getMenuId() {return menuId;}public void setMenuId(Integer menuId) {this.menuId = menuId;}public Integer getNums() {return nums;}public void setNums(Integer nums) {this.nums = nums;}public Double getMoney() {return money;}public void setMoney(Double money) {this.money = money;}public Integer getDiningTableId() {return diningTableId;}public void setDiningTableId(Integer diningTableId) {this.diningTableId = diningTableId;}public Date getBillDate() {return billDate;}public void setBillDate(Date billDate) {this.billDate = billDate;}public String getState() {return state;}public void setState(String state) {this.state = state;}@Overridepublic String toString() {return  id +"\t\t" + menuId +"\t\t\t" + nums +"\t\t\t" + money +"\t" + diningTableId +"\t\t" + billDate +"\t\t" + state +"\t\t" + name +"\t\t" + price;}
}

2.創(chuàng)建dao類(lèi)

3.?view中調(diào)用

 public void listBill() {/*//單表查詢(xún)List<Bill> bills = billService.list();System.out.println("\n編號(hào)\t\t菜品號(hào)\t\t菜品量\t\t金額\t\t桌號(hào)\t\t日期\t\t\t\t\t\t\t狀態(tài)");for (Bill bill : bills) {System.out.println(bill);}System.out.println("==============顯示完畢============");*///多表查詢(xún)List<MultiTableBean> multiTableBeans = billService.list2();System.out.println("\n編號(hào)\t\t菜品號(hào)\t\t菜品量\t\t金額\t\t桌號(hào)\t\t日期\t\t\t\t\t\t\t狀態(tài)\t\t菜品名\t\t價(jià)格");for (MultiTableBean bill : multiTableBeans) {System.out.println(bill);}System.out.println("==============顯示完畢============");}

?根據(jù)需要增加需要的字段

當(dāng)將來(lái)的多表查詢(xún)次數(shù)越來(lái)越多可以考慮拆分

2.javaBean和表的參數(shù)名一致性的問(wèn)題

//增加一個(gè)來(lái)自menu表的列 name

//思考 這里的屬性名是否一定要和表的列名保持一致.

//答: 可以不一致,但是需要sql做相應(yīng)的修改(例如?name?as?name2), 規(guī)范需要保持一致.

3.對(duì)于員工多字段的設(shè)置

4.完成更多功能?

可以完成登錄管理和人事管理

?

http://m.risenshineclean.com/news/64759.html

相關(guān)文章:

  • wordpress 移動(dòng)app網(wǎng)絡(luò)優(yōu)化工程師吃香嗎
  • 福州定制網(wǎng)站開(kāi)發(fā)制作搜索引擎關(guān)鍵詞seo優(yōu)化公司
  • 讓做網(wǎng)站策劃沒(méi)經(jīng)驗(yàn)怎么辦網(wǎng)站seo優(yōu)化案例
  • 網(wǎng)站維護(hù)中怎么解決營(yíng)銷(xiāo)策劃公司取名大全
  • 做網(wǎng)站主要來(lái)源seo排名優(yōu)化表格工具
  • wordpress 結(jié)構(gòu)解析關(guān)鍵詞seo教程
  • 類(lèi)似小紅書(shū)網(wǎng)站開(kāi)發(fā)費(fèi)用營(yíng)銷(xiāo)軟文模板
  • 新疆巴州建設(shè)局網(wǎng)站活動(dòng)推廣朋友圈文案
  • 淄博做網(wǎng)站多少錢(qián)sem推廣托管公司
  • 金融網(wǎng)站html5模板百度學(xué)術(shù)免費(fèi)查重入口
  • 網(wǎng)站如何做觸屏滑動(dòng)效果如何加入廣告聯(lián)盟賺錢(qián)
  • 軟件開(kāi)發(fā)班關(guān)鍵詞搜索優(yōu)化外包
  • 怎么構(gòu)建網(wǎng)站友情鏈接是什么意思
  • 簡(jiǎn)約個(gè)人主頁(yè)刷關(guān)鍵詞排名seo
  • 網(wǎng)站策劃建設(shè)百度競(jìng)價(jià)推廣登錄入口
  • 網(wǎng)上做調(diào)查網(wǎng)站有哪些seo推廣哪家服務(wù)好
  • wap 網(wǎng)站 css學(xué)習(xí)seo常用工具有哪些
  • 建筑安全員證查詢(xún)網(wǎng)上查詢(xún)seo排名優(yōu)化什么意思
  • 濟(jì)南咨詢(xún)行業(yè)網(wǎng)站開(kāi)發(fā)谷歌官網(wǎng)下載
  • wordpress目錄分類(lèi)廣州seo怎么做
  • 廣州網(wǎng)站建設(shè)推廣公司2022年時(shí)事政治熱點(diǎn)匯總
  • 福建定制網(wǎng)站開(kāi)發(fā)百度 營(yíng)銷(xiāo)推廣怎么收費(fèi)
  • 成都網(wǎng)站建設(shè)優(yōu)惠活動(dòng)友情鏈接聯(lián)盟
  • 石家莊長(zhǎng)安區(qū)網(wǎng)站建設(shè)公司新浪nba最新消息
  • 吉林省建設(shè)廳官方網(wǎng)站酒店seo是什么意思
  • 石家莊市網(wǎng)站建設(shè)培訓(xùn)班網(wǎng)絡(luò)營(yíng)銷(xiāo)方法有哪些?
  • 網(wǎng)站建設(shè)方案計(jì)劃書(shū)電子商務(wù)網(wǎng)站推廣
  • 萊蕪一中貼吧seo品牌優(yōu)化整站優(yōu)化
  • 河北建設(shè)工程信息網(wǎng)官網(wǎng) 費(fèi)用中項(xiàng)網(wǎng)鄭州seo顧問(wèn)熱狗hotdoger
  • 郴州網(wǎng)站制作廣州網(wǎng)站優(yōu)化步驟