使用Mybatis实现点菜功能
使用的是idea软件,主要使用的是mybatis+java+mysql实现了点菜功能,查看已点菜单和结账。新手上路,往多多指教。
这是我的目录结构
IMenu接口
package org.example.dao; import domin.Menu; import java.util.List; public interface IMenu { int insertMenu(Menu menu); List
Menu.java
package domin; public class Menu { public int number; public String name; public double price; public void setNumber(int number) { this.number = number; } public void setName(String name) { this.name = name; } public void setPrice(double price) { this.price = price; } public int getNumber() { return number; } public String getName() { return name; } public double getPrice() { return price; } }
mapper.xml
Utils.java
package utils; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.example.dao.IMenu; import java.io.IOException; import java.io.InputStream; public class Utils { private static SqlSessionFactory factory = null; static { String config = "SqlMapConfig.xml"; try { InputStream inputStream=Resources.getResourceAsStream(config); factory=new SqlSessionFactoryBuilder().build(inputStream); // factory.getConfiguration().addMapper(IMenu.class); }catch(IOException e){ e.printStackTrace(); } } public static SqlSession getSqlSession(){ SqlSession session = null; if(factory !=null){ session=factory.openSession(); } return session; } }
resources资源目录里的:log4j.properties
log4j.rootLogger=debug, stdout, R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout # Pattern to output the caller's file name and line number. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=example.log log4j.appender.R.MaxFileSize=100KB # Keep one backup file log4j.appender.R.MaxBackupIndex=5 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
resources资源目录里的:SqlMapConfig.xml
主配置文件。我的数据库名是student,总共就两个表:menu和yimenu
MenuTest.java测试类
package org.example; import domin.Menu; import org.apache.ibatis.session.SqlSession; import org.example.dao.IMenu; import org.junit.Test; import utils.Utils; import java.util.List; import java.util.Scanner; public class MenuTest { static double sum=0; public static void main(String[] args) { Scanner s = new Scanner(System.in); while(true){ showDish(); int n = s.nextInt(); switch(n){ case 1: showDishMenu(); break; case 2: showPersonDish(); break;//跳出switch循环 case 3: buy(); return;//结束整个程序 }} } //展示菜单 public static void showDishMenu(){ while(true){ SqlSession session = Utils.getSqlSession(); IMenu imenu =session.getMapper(IMenu.class); Listm =imenu.selectMenu(); System.out.println("0:返回主菜单"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); if(n!=0) { //根据顾客点菜的菜品 number 查询出顾客点的菜的信息,放在一个List中 SqlSession session2 = Utils.getSqlSession(); IMenu imenu2 =session2.getMapper(IMenu.class); List m2 =imenu2.selectYi(n); System.out.println("查询到的已点菜品List:"+m2); //根据查询到的已点菜品的 List中的信息,放在 已点 的数据库中 SqlSession session1 = Utils.getSqlSession(); IMenu iMenu1 = session1.getMapper(IMenu.class); Menu menu1 = new Menu(); menu1.setNumber(m2.get(0).getNumber()); menu1.setName(m2.get(0).getName()); menu1.setPrice(m2.get(0).getPrice()); int Menu11 = iMenu1.insertYiMenu(menu1); session1.commit(); System.out.println("您已点:"+menu1.getName()); session1.close(); session2.close(); session.close(); } else{ return; }}} //已点菜品 public static void showPersonDish(){ SqlSession session = Utils.getSqlSession(); IMenu imenu = session.getMapper(IMenu.class); List menu = imenu.OrderMenu(); session.close(); } //结账 public static void buy(){ SqlSession session = Utils.getSqlSession(); IMenu imenu = session.getMapper(IMenu.class); List menu = imenu.OrderMenu(); session.close(); for(int i=0;i< menu.size();i++){ sum=sum+menu.get(i).getPrice(); } System.out.println(sum + "元"); //将已点菜单的数据库清空 SqlSession session1 = Utils.getSqlSession(); IMenu iMenu = session1.getMapper(IMenu.class); int n = iMenu.deleteOrder(); System.out.println("已完成本次交易,欢迎下次光临!"); session1.commit(); session1.close(); } //展示菜品 public static void showDish(){ System.out.println("----主菜单----"); System.out.println("***菜单*** ttt 1"); System.out.println("***已点菜单*** tt 2"); System.out.println("***结账*** ttt 3"); System.out.println("----请根据编号选择服务----"); } //本次中未使用 //写一个函数 初始化 菜品,并且放入到集合中 // public static void insertMenu(){ // SqlSession session = Utils.getSqlSession(); // IMenu imenu =session.getMapper(IMenu.class); // Menu menu = new Menu(); // menu.setNumber(1); // menu.setName("红烧肉"); // menu.setPrice(12.0); // int m =imenu.insertMenu(menu); // session.commit(); // System.out.println("添加成功!"); // session.close(); // } }
数据库结构:
第一个表menu:存放的是菜单
第二个表:yimenu:存放的是已点的菜品,每次结账后会清空
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)