系统介绍

我们通过控制台实现了一个简单的餐馆点菜系统。本系统以控制台的操作代码输入的方式对一个点菜系统进行模拟。通过不同的选项,实现点菜,已点菜品查看和结算三个小功能。本系统的主要目的是通过对系统的构建,熟悉和掌握mybatis数据库框架的应用。系统的实现结果如图一所示:

系统实现过程

  1. 数据库的应用

数据库主要用来存储菜品信息,菜品信息包括菜品编号,菜品名称和菜品价格三个小项。

我们应用mybatis框架对数据库的内容进行调用和更新。
首先,我们在项目目录下创建菜品类,类属性包括id,name 和 price,并提供setter和getter方法。顺便重写toString();方法方便主程序对菜单的输出。

//dish类
package restrauntMenu;public class Dish {int id;//菜品序号String name;//菜品名称float price;//菜品价格public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}public Dish() {}public Dish(int id, String name, float price) {this.id = id;this.name = name;this.price = price;}@Overridepublic String toString() {return id + "\t" + name + "\t" + price;}
}

然后对mybatis进行配置。第一步是jdbc配置,在项目目录下建立mybatis-config.xml文件,文件的主要功能是对mybatis的功能设置和类与数据库中对应表的映射文件的引用。
根据不同的应用场景,设置相关参数。对于数据库相关的操作,涉及数据库和JVM之间的传输方式为JDBC,并根据JDBC的支持包进行调用。根据自己对数据库用户名和密码的设定输入用户名和密码。对于具体项目的操作,主要要关注package的设置和映射文件路径的设置。

<!-- mybatis-config.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><typeAliases><package name="restrauntMenu"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/restrauntMenu?characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="admin"/></dataSource></environment></environments><mappers><mapper resource="restrauntMenu/Dish.xml"/></mappers>
</configuration>

第二步是对类和数据表映射文件的建立。在类(Dish)所在目录下新建Dish.xml文件,本文件提供数据库的调用接口,通过具体的MySQL语句实现不同的数据库操作。

<!-- Dish.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="restrauntMenu"><select id="listDish" resultType="Dish">select * from   menu_     </select><insert id="addDish" parameterType="Dish">insert into menu_ values (#{id},#{name},#{price})</insert><update id="updateDish" parameterType="Dish">update menu_ set name=#{name}, price=#{price} where id=#{id}</update><delete id="deleteDish" parameterType="Dish">delete from menu where id=#{id}</delete></mapper>
  1. 系统实现

系统实现内容相对比较简单。主要通过死循环实现系统的持续运行,直到完成餐费结算。具体内容如下所示

package restrauntMenu;import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class Menu {static List<Dish> dishList = new ArrayList<>();//所有菜品static Map<Dish,Integer> selectedList = new HashMap<>();//顾客已选菜品public static void main(String[] args) throws IOException {initDish();Scanner s = new Scanner(System.in);while(true) {//输出主菜单mainManu();//获取用户操作int num = s.nextInt();switch(num){case 1:selectDish(s);case 2:showSelectedDish();break;case 3:buy();return;}}}private static void initDish() throws IOException {// TODO Auto-generated method stubString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sqlSessionFactory.openSession();dishList = session.selectList("listDish");session.close();}private static void buy() {// TODO Auto-generated method stubSystem.out.println("正在结算。。。");double total = 0f;for(Map.Entry<Dish, Integer> entry:selectedList.entrySet()) {total += entry.getKey().price*entry.getValue();}System.out.println("您总共消费"+total+" 元");}private static void showSelectedDish() {// TODO Auto-generated method stubSystem.out.println("----已点菜品----");for(Map.Entry<Dish, Integer> entry:selectedList.entrySet()) {System.out.println(entry.getKey()+"\t"+entry.getValue() + " 个");}}private static void selectDish(Scanner s) {// TODO Auto-generated method stubwhile(true) {System.out.println("----菜单----");for(Dish dish:dishList) {System.out.println(dish);}System.out.println("----输入号码点餐,0返回主菜单----");int id = s.nextInt();if(id==0) {return;}Dish dish = dishList.get(id-1);System.out.println("已点 "+dish.name);if(selectedList.get(dish)!=null)selectedList.put(dish,selectedList.get(dish)+1);elseselectedList.put(dish,1);}}private static void mainManu() {// TODO Auto-generated method stubSystem.out.println("----主菜单----");System.out.println("1\t点菜");System.out.println("2\t已点");System.out.println("3\t买单");System.out.println("----输入数字选择功能----");}
}

mybatis数据库框架应用之餐馆点菜系统相关推荐

  1. java计算机毕业设计前台点菜系统源码+程序+lw文档+mysql数据库

    java计算机毕业设计前台点菜系统源码+程序+lw文档+mysql数据库 java计算机毕业设计前台点菜系统源码+程序+lw文档+mysql数据库 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  2. Java毕设项目餐厅线上点菜系统计算机(附源码+系统+数据库+LW)

    Java毕设项目餐厅线上点菜系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...

  3. springboot毕设项目协同过滤推荐的餐厅点菜系统b2033(java+VUE+Mybatis+Maven+Mysql)

    springboot毕设项目协同过滤推荐的餐厅点菜系统b2033(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql ...

  4. SSM框架(spring+spring mvc+mybatis)+Mysql实现的星星少儿教育系统(功能包含前台:首页少儿早教知识、资讯、英语课程、视频、专家,后台包括文章管理、来源管理、返回首页等)

    博客目录 SSM框架(spring+spring mvc+mybatis)+Mysql实现的星星少儿教育系统 实现功能截图 系统功能 使用技术 代码 写在最后 SSM框架(spring+spring ...

  5. 基于SSM框架的企业考勤报销系统Spring+SpringMVC+MyBatis

    系统主要涉及到公司人事部门.财务人员.员工和管理员4种用户,人事部门可通过系统对员工上传的请假单进行审核同时可以查看所有员工的考勤状态.财务人员可以通过系统对员工上传的报销信息进行审核,员工可浏览对应 ...

  6. java计算机毕业设计ssm基于SSM框架的旅游订票系统s0s38(附源码、数据库)

    java计算机毕业设计ssm基于SSM框架的旅游订票系统s0s38(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstor ...

  7. javaweb课程设计-基于SSM框架的疫情数据统计分析系统源码+数据库,可以进行疫情数据录入、疫情数据查询、图表展示

    疫情数据统计分析系统 完整代码下载地址:基于SSM框架的疫情数据统计分析系统源码+数据库 介绍 疫情数据统计分析系统是一个基于SSM框架的网页端系统,项目中实现的功能如下:用户访问网站可以浏览全国疫情 ...

  8. 点菜系统数据库设计说明书

    1引言. 2 1.1编写目的. 2 1.2 定义. 2 1.3参考资料. 2 2需求分析. 3 2 .1数据字典. 3 2 .2数据流图. 3 3结构设计. 3 3.1概念结构设计. 3 3.2逻辑结 ...

  9. 基于python-实训基地管理系统-django框架计算机毕业设计源码+系统+数据库+lw文档+调试部署

    基于python-实训基地管理系统-django框架计算机毕业设计源码+系统+数据库+lw文档+调试部署 基于python-实训基地管理系统-django框架计算机毕业设计源码+系统+数据库+lw文档 ...

最新文章

  1. FPGA基础知识极简教程(3)从FIFO设计讲起之同步FIFO篇
  2. java怎么统计字符串中各个字母的个数,人生转折!
  3. [Selenium]Eclipse hangs at 57% in debug mode with TestNG tests
  4. 团购步入巨头时代,半自助团购或将极大提升网民网购质量
  5. 简单数据分布分析及python实现
  6. TFS中的统一集成(九)
  7. [转载]JS语法字典
  8. 全局光照模型与Rendering Equation(全局光照的最为基础的核心理论) .
  9. Kotlin 我的第一个kotlin程序【Android Studio】
  10. chrome升级后无高级-断续访问
  11. EPLAN P8 2.7在WIN10上安装无法连接虚拟加密狗的解决方法
  12. 恒指期货高手背后的辛酸付出谁又能懂
  13. android 网页存储,90%的人不懂将网页永久保存在手机里的方法
  14. 微信人工客服终于来了,但是「此」微信客服非「彼」微信客服
  15. 智能车辆纵向速度跟踪与控制方法研究
  16. c语言中num =10,num/100%10 这是什么意思求详细的计算逻辑
  17. Android开发之实时更新系统时间
  18. 武汉星起航跨境:跨境电商新蓝海,南非跨境电商市场迸发活力
  19. 你踩过几个?盘点微信H5小游戏开发中的那些坑
  20. 图像处理中的二值化和灰度化

热门文章

  1. 字符串搜索算法:暴力搜索,KMP
  2. 同步整流与异步整流(转)
  3. 如何解决浏览器主页被t999.cn劫持
  4. 显示或隐藏MacOS中的隐藏文件
  5. 为什么线性筛欧拉函数i%prime[j]==0的时候phi[i*prime[j]]=phi[i]*prime[j]
  6. HulaCWMS呼啦企业网站管理系统 v3.0.4
  7. numpy奇异值分解,广义逆矩阵与行列式
  8. 页面的跳转——请求重定向和请求转发
  9. 小蓝单车 CEO 李刚:辜负了各位,对不起
  10. vue项目中使用高德地图