基于控制台的点餐系统(无前端)项目心得
点餐系统
==============================================================================
以下内容仅为个人心得,我打算记录下来为自己的成长做一个记录。
理解水平过低,内容格式可能也不规范还请多包涵。
==============================================================================
一、连接数据库与关闭(工具类 JDBCUtilsByDruid )
1.通过 Druid 连接数据库
(1)Druid 通过 JDBC 规范实现 DataSource 接口
(2)通过配置文件传入连接数据库的参数(url,user,pwd,driver),
DataSource ds =
DruidDataSourceFactory.createDataSource(properties);
ds.getConnection();
以上内容解释:
首先通过调用 Druid 静态方法的 createDataSource(properties)实现对数据库的登录,并创建数据池对象,由 DataSource 接收(该对象被DataSource接收,是因为Druid实现了它,一个接口类型可以指向它的实现类对象);
通过动态绑定 DataSource 对象调用 Druid 底层的具体getConnection()方法来获得数据库连接Connection
2.“关闭”资源
(1)传入 Resultset、Statement、Connection 对象进行关闭
(2)注意:数据池不是真正关闭资源,Druid只是将资源放回池中等待下一次使用
(3)Apache-DBUtils 底层会关闭 Resultset、Statement ,实际我们需要关闭的只有Connection
二、Apache-DBUtils 驱动 和 BasicBAO
1.domain
该处就是数据库表的映射,生成 Javabean,它将配合 DBUtils 的使用,将查询到的数据封装进 Javabean类对象中,通过 DBUtils 的底层输出对象 或 将对象传入 ArrayList集合中
2.DBUtils 解决的是结果集的局限性,对不同表生成对应 JavaBean 我们可以自由地操作查询结果以及DMl操作:
(1)多行查询它将每一行数据按(JavaBean)对象传入ArrayList集合中
(2)单行查询将数据封装进对象中按(JavaBean)类型输出
(3)单行单列将数据封装进对象中按Object输出
(4)JavaBean 的属性要和表中字段一致,DBUtils在赋值时会结合setXxx()方法寻找对 应的字段名,如果名字不一样将无法正常赋值
3.BasicBAO 是对 DBUtils 的优化,它不是驱动,它是一种逻辑,DBUtils 返回结果是单一的,同时它不利于并发操作。
(1)在 DBUtils 基础上 我们不仅生成 映射类,还生成对应表的 DAO类
(2)BasicDAO类 中封装通用的 DML 以及 Query 操作的 SQL语句,它的返回类型使用了泛型,这样可以多样化我们的返回值
(3)所有DAO类继承了 BasicDAO,同时自身还可新增新的特有操作来方便业务需要
(4)对于多表查询解决方法:
4.1 创建 MultTableBean 类,该类就是JavaBean,其中封装了需要查询的多表字段,通过DBUtils获得查询数据
4.2 可有多个 MultTableBean,根据业务需求自行扩展
4.3 除了创建 MultTableBean 还可以将需要多表设计的类封装在一起,在主表 JavaBean 中封装一个外键表属性,在 DBUtils 查询多表时使用 MapListHandler 类 将数据接收,再通过setXxx()来赋值,详细:
pianshen.com/article/48341042440/
三、业务层 Service
1.不同业务层是对对应的 DAO 执行操作的类,根据不同 DAO类 创建对应的 Service
2.具体需求写在具体 Service 中,各司其职
3.同时为了达成一些复杂需求 Service 之间可以相互调用,配合完成
4.Service 中的方法随着需求的增加将不断生成新的内容
(1)employeeService
(2)diningTableService
(3)menuService
(4)billService
四、数据库
1.员工表(employee)
2.餐桌表(diningTable)
3.菜品表(menu)
4.账单(bill)
5.多表查询(MultTable)----分表设计
五、界面层 View
1.界面操作,其对应操作的就是业务层
2.操作代码封装,提高可读性
六、总结
1. 目前项目已经写完,但还是有很多提升空间,这只是一个基于控制台的系统,没有界面应用,运行环境也因JDK的要求大大受限制,未来在这方面还得好好下功夫
2. 关于数据库的使用方面,在开发 登录功能 多表查询时,我现在了自己在设计表时的重大缺陷,主键外键并没有应用上,导致数据无法真正对应上,完全是靠一个自增的id号匹配,后期数据库还需要好好优化
3.本次开发中出现了一个 栈溢出异常,在查明原因时是两个类中都封装了对方类型new
对象,还是成员变量,导致无限循环,递归操作。不过我觉得是好事,这样我能更多的在开发中吸取经验
4. 对于idea的使用还需要进一步提升

浙公网安备 33010602011771号