使用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> selectMenu();
List<Menu> selectYi(int number);
int insertYiMenu(Menu menu);
List<Menu> OrderMenu();
int deleteOrder();
}

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

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace是dao的全限定包名-->
<mapper namespace="org.example.dao.IMenu"><!--    配置查询所有--><!--    id是dao接口的方法名称--><!--    #{userId}占位符表示从java程序中传过来的数据-->
<!--    </select>--><!--    insert into user values(666,161616)如果传入给mybatis是一个java对象,使用#{属性名}获取此属性的值。属性值放到 #{} 占位符的位置,mybatis执行此属性 对应的getxxx()。例如:#{password},执行getpassword();
--><select id="selectMenu" resultType="domin.Menu">select * from menu</select><insert id="insertMenu">insert into menuvalues (#{number},#{name},#{price})</insert><select id="selectYi" resultType="domin.Menu">select * from menu where number=#{number}</select><insert id="insertYiMenu">insert into yimenuvalues (#{number},#{name},#{price})</insert><select id="OrderMenu" resultType="domin.Menu">select * from yimenu</select><delete id="deleteOrder">delete from yimenu</delete>
</mapper>

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--    mybatis的主配置文件-->
<configuration><!--    配置日志文件--><settings><setting name="logImpl" value="STDOUT_LOGGING"></setting></settings><!--        配置环境--><environments default="mysql"><!--            配置mysql环境--><environment id="mysql"><!--                配置事务类型--><transactionManager type="JDBC"></transactionManager><!--            配置数据源(连接池):创建Connection对象--><dataSource type="POOLED"><!--                    配置连接数据库的四个基本信息:driver:驱动的内容--><property name="driver" value="com.mysql.cj.jdbc.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/student?serverTimezone=UTC"></property><property name="username" value="root"></property><property name="password" value="111111"></property></dataSource></environment></environments><!--指定映射配置文件(其他mapper文件)的位置路径,映射配置文件指的是每个dao独立的配置文件;目的:找到其他文件中的sql语句--><!--        这个路径是从target/classes路径开始的--><mappers><mapper resource="org/example/dao/mapper.xml"></mapper></mappers></configuration>

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);List<Menu> m =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<Menu> 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> menu = imenu.OrderMenu();session.close();}//结账public static void buy(){SqlSession session = Utils.getSqlSession();IMenu imenu = session.getMapper(IMenu.class);List<Menu> 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("***菜单*** \t\t\t 1");System.out.println("***已点菜单*** \t\t 2");System.out.println("***结账*** \t\t\t 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:存放的是已点的菜品,每次结账后会清空

使用Mybatis实现点菜功能相关推荐

  1. MyBatis:CRUD功能

    在前面已经自动生成了mapper和pojo,接下来我们实现mybatis的CRUD功能,先新建service.controller层的方法. 这里的sid是一个开源的id生成类,写完后,我们还需要在启 ...

  2. angular 点菜_JavaScript实现的select点菜功能示例

    本文实例讲述了JavaScript实现的select点菜功能.分享给大家供大家参考,具体如下: 点菜 select{ width:120px; } 鸡蛋汤 海带汤 万峦猪脚 炸猪排 上海醉蟹 红烧狮子 ...

  3. mysql反模式_myfat: MyFat是MyBatis的DAO功能增强插件

    MyFat让MyBatis更胖 简介 | Intro MyFat是MyBatis的DAO功能增强插件,利用全功能持久层工具jSqlBox来补足MyBatis缺少的功能.MyFat需Java8或以上. ...

  4. Spring Boot + MyBatis :登录注册功能

    ** 个人博客:[http://wj2y.cn/] ** 1. 编写实体类 用户登录注册这里做的比较简单,只做了用户名和密码,所以实体类User.java中只需要username.password两个 ...

  5. Mybatis实现分页功能

    问题 在普通的分页过程中,要查询出所有的数据,并查询出count才能进行分页,代码量多,处理起来比较麻烦! 处理 使用mybatis分页插件PageHelper,使用起来十分方便.该插件支持以下数据库 ...

  6. 用select实现点菜功能

    #!/bin/bash echo "" >a.txt PS3="请问您要吃什么?" echo "满60元打八" dazhe(){ s= ...

  7. mybatis日志功能是如何设计的?

    引言 我们在使用mybatis时,如果出现sql问题,一般会把mybatis配置文件中的logging.level参数改成debug,这样就能在日志中看到某个mapper最终执行sql.入参和影响数据 ...

  8. java mysql vo mybatis 分页_使用mybatis-plus如何实现分页查询功能

    使用mybatis-plus如何实现分页查询功能 发布时间:2020-11-06 17:34:12 来源:亿速云 阅读:538 作者:Leah 今天就跟大家聊聊有关使用mybatis-plus如何实现 ...

  9. springboot+Vue饭店点菜点餐管理系统

    该饭店点菜系统,采用了Vue技术开发,后台数据库是mysql数据库,系统分为前台和后台,前台是一般客户登陆后进行点菜选菜,后台是管理员用户登录后进行点菜信息的处理以及注册会员信息的处理 网站前台: 在 ...

最新文章

  1. couchdb 任意命令执行漏洞(cve-2017-12636)
  2. 第三届Apache Flink 极客挑战赛暨AAIG CUP攻略发布!
  3. 用SqlBulkCopy批量安插数据时提示来自数据源的 String 类型的给定值不能转换为指定目标列的类型 int...
  4. 安全套接层Secure Sockets Layer,SSL
  5. winform空间批量控制
  6. 跨网段远程调试vs_如何提高后台服务应用问题的排查效率?日志 VS 远程调试
  7. Linux性能优化2.1 CPU性能统计信息
  8. 快慢指针:141. 环形链表(判断是否存在环路)
  9. QML笔记-在背景图中添加NumberAnimation使得界面效果更佳(小技巧)
  10. GitHub 免费开放开发者计划,增加系列新优势
  11. 作为一名大厂的测试人员,软件测试真的是一份低调的工作吗?
  12. 大数据-05-Spark之读写HBase数据
  13. QT基于Npcap设计的网络抓包小程序
  14. python分析qq聊天记录
  15. android金钱符号变形,使用¥(一个中文字宽)还是¥(半个中文字宽)?
  16. 阿里云、百度云、腾讯云、AWS、微软Azure、华为云、金山云等云服务商产品的差异是啥?
  17. 论文阅读 Learning Motion in Feature Space: Locally-Consistent Deformable Convolution Networks
  18. 生成固定的句子,句子中含有给定的多个关键词,python代码实现
  19. PCIe“拍了拍”PCI- PCI和PCIe发展历史
  20. 玫瑰花html有颜色的,玫瑰花有哪些颜色

热门文章

  1. python boxcox1p_Python mpmath.mpf方法代码示例
  2. 电大2020计算机基础,2020年电大形考计算机基础答案(22页)-原创力文档
  3. 读csv文件java_用Java读取CSV文件的最快方法
  4. 全视野数字切片(whole slide images, WSIs)的预处理,KFB,SVS,NDPI
  5. 7-218 藏头诗 (15 分)
  6. 仿android商城商品列表,商品列表 · 人人商城 IOS、Android API · 看云
  7. 虚拟机性能测试与对比
  8. EV-HC32F460开发资料准备
  9. 算法5:队列——解密 QQ 号
  10. CG100修复成功!14款 捷豹 XF CX23-14D374-AD XC2361A-56F