<Cafe> db연결해서 값 넣기
<코드>
[Cafecontroller]
package com.human.springboot;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import jakarta.servlet.http.HttpServletRequest;
@Controller
public class Cafecontroller {
@Autowired
private IDAO idao;
@GetMapping("/menu")
public String cafe() {
return "cafe";
}
@PostMapping("/menu_select")
@ResponseBody
public String doSelect() {
ArrayList<CafeDTO> cdto=idao.menu_select();
JSONArray ja=new JSONArray();
for(int i=0;i<cdto.size();i++) {
JSONObject jo = new JSONObject();
CafeDTO co=new CafeDTO();
co=cdto.get(i);
jo.put("s_no", co.getS_no());
jo.put("name", co.getName());
jo.put("price", co.getPrice());
ja.put(jo);
}
return ja.toString();
}
@PostMapping("/menu_insert")
@ResponseBody
public String doInsert(HttpServletRequest req) {
String retval="ok";
try {
String name=req.getParameter("name");
int price=Integer.parseInt(req.getParameter("price"));
idao.menu_insert(name,price);
}catch(Exception e) {
retval="fail";
}
return retval;
}
@PostMapping("/menu_delete")
@ResponseBody
public String doDeletet(HttpServletRequest req) {
String retval="ok";
try {
int s_no=Integer.parseInt(req.getParameter("s_no"));
idao.menu_delete(s_no);
} catch(Exception e) {
retval= "fail";
}
return retval;
}
@PostMapping("/menu_update")
@ResponseBody
public String doUpdate(HttpServletRequest req) {
String retval="ok";
try {
int s_no=Integer.parseInt(req.getParameter("s_no"));
String name=req.getParameter("name");
int price=Integer.parseInt(req.getParameter("price"));
idao.menu_update(name,price,s_no);
} catch(Exception e) {
retval= "fail";
}
return retval;
}
@PostMapping("/order_select")
@ResponseBody
public String doOrderSelect() {
ArrayList<HistoryDTO> hdto=idao.order_select();
JSONArray ja=new JSONArray();
for(int i=0;i<hdto.size();i++) {
JSONObject jo = new JSONObject();
HistoryDTO ho=new HistoryDTO();
ho=hdto.get(i);
jo.put("name",ho.getName());
jo.put("qty", ho.getQty());
jo.put("price",ho.getPrice());
jo.put("mobile", ho.getMobile());
jo.put("created", ho.getCreated());
ja.put(jo);
}
System.out.println(ja);
return ja.toString();
}
@PostMapping("/order_insert")
@ResponseBody
public String doOrder(HttpServletRequest req) {
String reval="ok";
try {
String name=req.getParameter("name");
int qty=Integer.parseInt(req.getParameter("qty"));
int price=Integer.parseInt(req.getParameter("price"));
String mobile=req.getParameter("mobile");
String time=req.getParameter("time");
System.out.println(name);
System.out.println(qty);
System.out.println(price);
System.out.println(mobile);
System.out.println(time);
idao.order_insert(name,price,qty,mobile,time);
}catch(Exception e) {
reval="fail";
}
return reval;
}
}
[CafeDTO]
package com.human.springboot;
import lombok.Data;
@Data
public class CafeDTO {
int s_no;
String name;
int price;
}
[HistoryDTO]
package com.human.springboot;
import lombok.Data;
@Data
public class HistoryDTO {
int seqno;
String created;
String mobile;
String name;
int qty;
int price;
}
[IDAO]
package com.human.springboot;
import java.util.ArrayList;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface IDAO {
ArrayList<CafeDTO> menu_select();
void menu_insert(String x1, int x2);
void menu_delete(int x1);
void menu_update(String x1,int x2,int x3);
ArrayList<HistoryDTO> order_select();
void order_insert(String x1,int x2, int x3,String x4,String x5);
}
[cafe.xml]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.human.springboot.IDAO">
<select id="menu_select" resultType="com.human.springboot.CafeDTO">
select s_no,name,price from menu order by s_no asc
</select>
<insert id="menu_insert">
insert into menu(s_no,name,price) values(snoseq.nextval,#{param1},#{param2})
</insert>
<delete id="menu_delete">
delete from menu where s_no=#{param1}
</delete>
<update id="menu_update">
update menu set name=#{param1}, price=#{param2} where s_no=#{param3}
</update>
<select id="order_select" resultType="com.human.springboot.HistoryDTO">
select seqno,name,pirce,qty,mobile,created from history order by seqno asc
</select>
<insert id="order_insert">
insert into history(seqno,name,price,qty,mobile,created) values(his_seq.nextval,#{param1},#{param2},#{param3},#{param4},#{param5})
</insert>
</mapper>
[cafe.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="http://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
<title>카페관리</title>
</head>
<style>
body{
font-size: 18px;
color: chocolate;
}
select{
width: 240px; font-size: 20px;
}
input,button{
font-size: 20px;
color: darkslategray;
}
.line{
border: 1px solid black;
}
#tbl1{
width: 860px;border-collapse: collapse;
}
#tbl1:first-child{
text-align: center;background-color: bisque;color:darkslategray;
}
#tbl1:nth-child(2)
</style>
<body>
<table id=tbl1 align=center>
<tr id=tr1>
<td colspan="3"><h1>카페관리</h1></td>
</tr>
<tr>
<td valign="top" align="center" class="line" style="background-color:cornsilk;">
<table>
<tr>
<td colspan="2" style="text-align: center;"><h3>메뉴목록</h3></td></tr>
<tr>
<td colspan="2">
<select size="14" id=menulist>
</select><br>
</td>
</tr>
<tr>
<td>메뉴명</td><td><input type=text id=name name=name size="12"></td>
</tr>
<tr>
<td>수량</td><td><input type=number id=qty name=qty style="width: 120px">잔</td>
</tr>
<tr>
<td>가격</td><td><input type=number id=price name=price style="width: 120px">원</td>
</tr>
<tr>
<td><button id=btnSelect>주문</button></td>
<td align="right"><button id=btnReset>지우기</button></td>
</tr>
<tr><td colspan=2 align="center"><button id="btnmenu">메뉴관리</button></td></tr>
</table>
</td>
<td valign="top" align="center" class="line" style="background-color:rgb(252, 239, 223);">
<table style="width:300px">
<tr>
<td colspan="2" style="text-align: center;"><h3>주문내역</h3></td></tr>
<tr>
<td colspan="2">
<select size="15" id=orderlist style='width:300px'>
</select>
</td>
</tr>
<tr>
<td>주문금액</td><td><input type="number" id=sum style="width: 120px;">원</td>
</tr>
<tr>
<td>모바일번호</td><td><input type="text" id="mobile" name="mobile" style="width: 120px;"></td>
</tr>
<tr><td> </td></tr>
<tr>
<td><button id="btnOrder">주문완료</button></td>
<td align="right"><button id="btnCancel">취소</button></td>
</tr>
</table>
</td>
<td valign="top" align="center" class="line" style="background-color: cornsilk;">
<table>
<tr>
<td colspan="2" style="text-align: center;"><h3>매출내역</h3></td>
</tr>
<tr>
<td>
<select size="20" id="sales" style="width:400px">
</select>
</td>
</tr>
<tr><td colspan=2>매출총액 : <input type=number id="total" style="width:100px">원</td>
<tr>
<td align="center"><button id="btnRefresh">새로고침</button></td>
</tr>
</table>
</td>
</tr>
<tr style="height: 150px;background-color: darksalmon;">
<td style="vertical-align:top;color: brown;">
Created by Giga Coffe
</td>
<td colspan="3" style="text-align:right;vertical-align:bottom;color: brown;">
Designed by Hwang
</td>
</tr>
</table>
<div id="menuDlg" style="display:none;">
<table id=tblMenu style="width: 100%; border-collapse: collapse;">
<tr><th>일련번호</th><th>메뉴명</th><th>가격</th></tr>
</table><br>
<table>
<tr><td>메뉴명</td><td><input type=text id=name1>
<input type=hidden id=s_no1></td></tr>
<tr><td>가격</td><td><input type=number id=price1></td></tr>
<tr><td colspan=2 align=center>
<button id=btnAdd>등록</button>
<button id=btnEmpty>비우기</button>
<button id=delete>삭제</button></td></tr>
</table>
</div>
</body>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
<script>
let sum=0;
let sum2=0;
$(document)
.ready(function(){
loadData();
loadData2();
})
.on('click','#btnmenu',function(){
$('#menuDlg').dialog({
title:'메뉴관리',
modal:true,
width:500,
beforeClose:function(){
$('#btnEmpty').trigger("click");
$('select option').remove();
loadData();
}
})
})
.on('click','#btnEmpty',function(){
$('#name1,#price1,#s_no1').val('');
return false;
})
.on('click','#menulist option:selected',function(){
str=$('#menulist option:selected').text();
ar=str.split(', ');
ar[1]=ar[1].trim();
$('#name').val(ar[0]);
$('#price').val(ar[1]);
$('#qty').val(1);
})
.on('change','#qty',function(){
$('#price').val(ar[1]*$('#qty').val());
})
.on('click','#btnAdd',function(){
if($('#s_no1').val()==''){
$.ajax({url:'/menu_insert',type:'post',
data:{name:$('#name1').val(),price:$('#price1').val()},dataType:'text',
beforeSend:function(){
let name1=$.trim($('#name1').val());
if(name1==''||name==null){
alert('메뉴명을 입력하시오');
return false;
}
if($('#price1').val()==''){
alert('가격을 입력하시오');
return false;
}
},
success:function(data){
if(data=="ok"){
loadData2();
$('#btnEmpty').trigger("click");
} else{
alert("insert 실패");
}
}
})
} else {
$.ajax({url:'/menu_update',type:'post',
data:{name:$('#name1').val(),price:$('#price1').val(),s_no:$('#s_no1').val()},dataType:'text',
beforeSend:function(){
let s_no=$.trim($('#s_no1').val());
if(s_no==''||s_no==null){
alert('메뉴를 선택하세요');
return false;
}
},
success:function(data){
if(data=="ok"){
loadData2();
$('#btnEmpty').trigger("click");
} else{
alert("update 실패");
}
}
})
}
})
.on('click','#tblMenu tr',function(){
let s_no=$(this).find('td:eq(0)').text();
$('#s_no1').val(s_no);
let name=$(this).find('td:eq(1)').text();
$('#name1').val(name);
let price=$(this).find('td:eq(2)').text();
$('#price1').val(price);
return false;
})
.on('click','#delete',function(){
$.ajax({url:'/menu_delete',type:'post',
data:{s_no:$('#s_no1').val()},dataType:'text',
beforeSend:function(){
let s_no=$.trim($('#s_no1').val());
if(s_no==''||s_no==null){
alert('메뉴를 선택하세요');
return false;
}
},
success:function(data){
if(data=="ok"){
loadData2();
$('#btnEmpty').trigger("click");
} else{
alert("delete 실패");
}
}
})
})
.on('click','#btnReset',function(){
$('#name,#price,#s_no,#qty').val('');
return false;
})
.on('click','#btnSelect',function(){
let name=$('#name').val();
let qty=$('#qty').val();
let price=$('#price').val();
let str='<option>'+name+' ,'+qty+' ,'+price+'</option>';
$('#orderlist').append(str);
$('#btnReset').trigger('click');
str1=$('#orderlist option:last').val();
arr=str.split(' ,');
arr[2]=arr[2].trim();
str2=parseInt(arr[2]);
sum=sum+str2;
$('#sum').val(sum);
$('#mobile').val('-');
})
.on('click','#btnCancel',function(){
$('#orderlist option').remove();
sum=0;
$('#sum').val(sum);
$('#moblie').val('-');
})
.on('click','#btnOrder',function(){
if($('#sum').val()==''){
return false;
}
let today=new Date();
year=today.getFullYear()+'년';
month=('0' + (today.getMonth() + 1)).slice(-2)+'월';
day = ('0' + today.getDate()).slice(-2)+'일';
hours = ('0' + today.getHours()).slice(-2)+':';
minutes = ('0' + today.getMinutes()).slice(-2)+':';
seconds = ('0' + today.getSeconds()).slice(-2);
nowdate = year+month+day+hours+minutes+seconds;
console.log(nowdate);
to='주문금액'+$('#sum').val()+'원';
number=$('#mobile').val();
str='<option>'+nowdate+', '+$('#sum').val()+'원, '+number+'</option>'
$('#sales').append(str);
sumtotal=$('#sales option:last').val();
ar=sumtotal.split(',');
console.log(ar);
console.log(ar[1]);
str7=parseInt(ar[1]);
console.log(str7);
sum2=sum2+str7;
console.log('합계 : '+sum2);
$('#total').val(sum2);
$('#sum').val('');
$('#mobile').val('');
//total=0;
optionConut=$('#orderlist option').length;
console.log(optionConut);
for(i=0;i<$('#orderlist option').length;i++){
menuString=$("#orderlist option").eq(i).text();
menuInfo=menuString.trim().split(',');
menuName=menuInfo[0];
menuQty=parseInt(menuInfo[1]);
menuPrice=parseInt(menuInfo[2]);
$.ajax({url:'/order_insert',type:'post',
data:{name:menuName,price:menuPrice,qty:menuQty,mobile:number,time:nowdate},dataType:'text',
beforeSend:function(){
let name=menuName;
if(name==''||name==null){
alert('주문내역이 없습니다. 주문을 입력하세요');
return false;
}
}, success:function(data){
if(data=="ok"){
console.log("됐다다다ㅏ");
}else{
alert("insert 실패");
}
}
})
}
$('#btnCancel').trigger('click');
})
function loadData(){
$.ajax({url:'/menu_select',type:'post',dataType:'json',data:{},
success:function(data){
$('#menulist tr:gt(0)').remove();
for(let i=0;i<data.length;i++){
let menu = data[i];
let str='<option>';
//str+='<td>'+menu['s_no']+'</td>';
str+='<td>'+menu['name']+', '+'</td>';
str+='<td>'+menu['price']+'</td></option>';
$('#menulist').append(str);
}
}})
}
function loadData2(){
$.ajax({url:'/menu_select',type:'post',dataType:'json',data:{},
success:function(data){
$('#tblMenu tr:gt(0)').remove();
for(let i=0;i<data.length;i++){
let menu = data[i];
let str='<tr>';
str+='<td>'+menu['s_no']+'</td>';
str+='<td>'+menu['name']+'</td>';
str+='<td>'+menu['price']+'</td></tr>';
$('#tblMenu').append(str);
}
}})
}
</script>
</html>
<결과>
/menu 화면 | |
![]() |
메뉴목록에 db에 저장된 메뉴들이 옵션에 뜬다. |
메뉴관리 버튼을 누르면 메뉴를 추가할 수 있다. 추가하면 메뉴목록에도 같이 추가된다. |
메뉴를 선택하면 메뉴명,수량,가격나오고 수량을 올리면 가격도 그에 맞춰서 올라간다. |
주문내역에 주문이 들어가고 모바일번호를 입력한다. | 취소버튼을 누르면 주문내역이 초기화 된다. |
주문완료를 누르면 매출내역에 시간, 매출총액, 모바일 번호가 매출내역에 들어간다. |
매출 총액은 매출내역의 금액을 모두 더해서 나온다. |
<로그인, 회원가입>
-ajax가 꼭 필요한건 loginid확인할때...?
[oracle]
create table singon(
id VARCHAR2(50) not null primary key,
password varchar2(50) not null,
nickname varchar2(100),
gender varchar2(20),
interest varchar2(100)
);
흑흑흑흑
2023.03.16 (0) | 2023.03.16 |
---|---|
2023.03.15 (0) | 2023.03.15 |
2023.03.10 (0) | 2023.03.10 |
2023.03.09 (0) | 2023.03.10 |
2023.03.07 (0) | 2023.03.07 |