【JavaWeb项目】——外卖订餐系统之准备部分(Hutool工具,Bootstrap前端框架、三层架构,数据库设计以及方法设计
🎯了解hutool工具及其使用
😎简介
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。
😎安装
🎈Maven项目
不会maven的朋友可以去看这两篇文章学一下
在项目的pom.xml的dependencies中加入以下内容:
🎈Gradle项目
😎 Hutool工具之数据库的简单操作
🎈由来
数据库操作不外乎四门功课:增删改查,在Java的世界中,由于JDBC的存在,这项工作变得简单易用,但是也并没有做到使用上的简化。于是出现了JPA(Hibernate)、MyBatis、Jfinal、BeetlSQL等解决框架,或解决多数据库差异问题,或解决SQL维护问题。而Hutool对JDBC的封装,多数为在小型项目中对数据处理的简化,尤其只涉及单表操作时。OK,废话不多,我们来依次介绍。
🎈配置文件
Maven项目中在src/main/resources
目录下添加db.setting
文件(非Maven项目添加到ClassPath中即可):
🎈 引入MySQL JDBC驱动的jar包
🎈增删改查
✨增
插入数据并返回自增主键:
✨删
注意 考虑安全性,使用del方法时不允许使用空的where条件,防止全表删除,如有相关操作需要,请调用execute方法执行SQL实现。
✨改
注意 条件语句除了可以用
=
精确匹配外,也可以范围条件匹配,例如表示age < 12
可以这样构造Entity:Entity.create("user").set("age", "< 12")
,但是通过Entity方式传入条件暂时不支持同字段多条件的情况。
✨查
- 查询全部字段
- 条件查询
- 模糊查询
或者:
- 分页查询
🎯Bootstrap前端框架
😎简介
什么是 Bootstrap?
Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的。
历史
Bootstrap 是由 Twitter 的 Mark Otto 和 Jacob Thornton 开发的。Bootstrap 是 2011 年八月在 GitHub 上发布的开源产品。
为什么使用 Bootstrap?
- 移动设备优先:自 Bootstrap 3 起,框架包含了贯穿于整个库的移动设备优先的样式。
- 浏览器支持:所有的主流浏览器都支持 Bootstrap。
- 容易上手:只要您具备 HTML 和 CSS 的基础知识,您就可以开始学习 Bootstrap。
- 响应式设计:Bootstrap 的响应式 CSS 能够自适应于台式机、平板电脑和手机。
- 它为开发人员创建接口提供了一个简洁统一的解决方案。
- 它包含了功能强大的内置组件,易于定制。
- 它还提供了基于 Web 的定制。
- 它是开源的。
Bootstrap 包的内容
- 基本结构:Bootstrap 提供了一个带有网格系统、链接样式、背景的基本结构。这将在 Bootstrap 基本结构 部分详细讲解。
- CSS:Bootstrap 自带以下特性:全局的 CSS 设置、定义基本的 HTML 元素样式、可扩展的 class,以及一个先进的网格系统。这将在 Bootstrap CSS 部分详细讲解。
- 组件:Bootstrap 包含了十几个可重用的组件,用于创建图像、下拉菜单、导航、警告框、弹出框等等。这将在 布局组件 部分详细讲解。
- JavaScript 插件:Bootstrap 包含了十几个自定义的 jQuery 插件。您可以直接包含所有的插件,也可以逐个包含这些插件。这将在 Bootstrap 插件 部分详细讲解。
- 定制:您可以定制 Bootstrap 的组件、LESS 变量和 jQuery 插件来得到您自己的版本。
😎使用
引入框架之后,其余的都是仿照着官网:
🎯三层架构的使用
三层架构通常指的是软件设计中的Controller、Service和DAO三个层次,它们在应用程序中各自承担不同的职责,相互协作以实现整体功能。
Controller层(控制层):Controller层是表现层,负责接收用户的输入,并将请求转发给相应的服务层处理,最后返回处理结果给用户。它位于架构的最前端,直接面对用户或外部请求,是系统与外界交互的窗口。控制层的主要任务是请求处理和数据转发,不包含业务逻辑,确保了用户接口的轻量化。例如,在一个Web应用中,Controller层接收来自网页表单或者移动端的请求,然后调用Service层进行进一步的业务处理。
Service层(业务逻辑层):Service层是业务逻辑层,封装了应用程序的核心业务逻辑。这一层承担着处理具体业务逻辑的任务,如用户的增删改查、发送验证码或邮件等。它解释用户的请求,执行必要的业务计算,调用数据访问层进行数据持久化操作,并返回执行结果。通过封装业务逻辑,Service层使得系统更加模块化,便于维护和复用。例如,在用户管理系统中,Service层会处理注册、登录等业务逻辑,调用DAO层来实现数据的存取。
DAO层(数据访问层):DAO层负责与数据库或其他持久化存储方式直接交互。它的主要职责是执行具体的数据库操作,如CRUD(增加、查询、更新和删除),并返回操作结果。通过抽象化数据访问,DAO层使得业务逻辑层与数据存储细节解耦,提高了系统的适应性和稳定性。
😎controller层
该层主要放置的是Servlet代码,进行接收用户的输入,并将请求转发给相应的服务层处理,最后返回处理结果给用户。
😎dao层
DAO层(数据访问层):DAO层负责与数据库或其他持久化存储方式直接交互。它的主要职责是执行具体的数据库操作,如CRUD(增加、查询、更新和删除),并返回操作结果。通过抽象化数据访问,DAO层使得业务逻辑层与数据存储细节解耦,提高了系统的适应性和稳定性。
😎Service层
Service层是业务逻辑层,封装了应用程序的核心业务逻辑。这一层承担着处理具体业务逻辑的任务,如用户的增删改查、发送验证码或邮件等。它解释用户的请求,执行必要的业务计算,调用数据访问层进行数据持久化操作,并返回执行结果。通过封装业务逻辑,Service层使得系统更加模块化,便于维护和复用。
🎯数据库设计
area表是表示店铺地址的。详情见表。
area表
序号 |
列名 |
数据类型 |
长度 |
主键 |
说明 |
1 |
aid |
int |
|
是 |
地区id |
2 |
aname |
varchar |
100 |
|
地区名称 |
car表是用来表示购物车信息的,详情见表。
表 car表
序号 |
列名 |
数据类型 |
长度 |
主键 |
说明 |
1 |
cid |
int |
|
是 |
购物车id |
2 |
cname |
varchar |
1000 |
|
菜品名 |
3 |
cstate |
int |
|
|
购物车状态 |
4 |
cprice |
int |
|
|
单价 |
5 |
cfid |
int |
|
|
餐品id |
6 |
cuid |
int |
|
|
用户id |
7 |
cdid |
int |
|
|
店铺id |
dianpu表是用来存储店铺信息的,详情见表3-4。
表3-4 dianpu表
序号 |
列名 |
数据类型 |
长度 |
主键 |
说明 |
1 |
did |
int |
|
是 |
店铺id |
2 |
dname |
varchar |
1000 |
|
店名 |
3 |
dareaid |
int |
|
|
所在区域id |
food表是用来存储店铺中的餐品信息的,详情见表。
food表
序号 |
列名 |
数据类型 |
长度 |
主键 |
说明 |
1 |
fid |
int |
|
是 |
餐品id |
2 |
fname |
varchar |
100 |
|
餐品名 |
3 |
fcount |
int |
|
|
购买人数 |
4 |
fprice |
int |
|
|
单价 |
5 |
fdianid |
int |
|
|
店铺id |
6 |
fstate |
int |
|
|
状态 |
shangjia表是用来存储商家信息的,详情见表。
shangjia表
序号 |
列名 |
数据类型 |
长度 |
主键 |
说明 |
1 |
sid |
int |
|
是 |
商家id |
2 |
sname |
varchar |
1000 |
|
商家名称 |
3 |
password |
varchar |
1000 |
|
登入密码 |
4 |
sdianid |
int |
|
|
店铺id |
user表是用来存储用户信息的,详情见表。
user表
序号 |
列名 |
数据类型 |
长度 |
主键 |
说明 |
1 |
uid |
int |
|
是 |
用户id |
2 |
uname |
varchar |
100 |
|
用户名称 |
3 |
password |
varchar |
100 |
|
用户密码 |
🎯方法设计
😎FoodDao类
😎FoodDaoImpl实现类
这是一个Java类,名为FoodDaoImpl,实现了FoodDao接口。这个类主要用于操作数据库中的food表,包括查询、添加、更新食物信息和更新食物状态。具体功能如下:
1. findFood(String sql):根据传入的SQL语句查询数据库中的食物信息,返回一个包含Entity对象的列表。
2. addFood(String fname, int fcount, int fprice, int fdianid):向数据库中添加一条新的食物记录,参数分别为食物名称、数量、价格和店铺ID。如果插入成功,返回true,否则返回false。
3. updateFood(int fid, String fname, int fcount, int fprice, int fdianid, int fstate):根据传入的fid更新数据库中的食物信息,参数分别为食物ID、名称、数量、价格、店铺ID和状态。如果更新成功,返回true,否则返回false。
4. updateState(int fid, int fstate):根据传入的fid更新数据库中的食物状态,参数分别为食物ID和状态。如果更新成功,返回true,否则返回false。
😎 ShangDao类
😎ShangDaoImpl类
这是一个Java类,名为ShangDaoImpl,实现了ShangDao接口。这个类有两个方法:FindSid和FindSdianid。
FindSid方法接收两个参数,分别是sname1和password1,用于查询数据库中是否存在对应的商家记录,如果存在则返回商家的ID,否则返回0。
FindSdianid方法接收一个参数sid,用于查询数据库中对应商家的店铺ID,如果存在则返回店铺ID,否则返回0。
😎 UserDao类
😎 UserDaoImpl类
这是一个Java类,名为UserDaoImpl,实现了UserDao接口。这个类有三个方法:FindUid、FindSql和addUser。
1. FindUid方法接收两个参数,name和password,用于查询数据库中是否存在对应的用户记录。如果存在,返回用户的ID;否则返回0。
2. FindSql方法接收一个参数biaozhi,根据不同的值返回不同的SQL查询语句。这些查询语句用于从food表中筛选出不同条件下的食物记录。
3. addUser方法接收两个参数,name和password,用于向数据库的user表中插入一条新的用户记录。如果插入成功,返回true;否则返回false。
😎CarDao类
😎 CarDaoImpl类
这是一个名为CarDaoImpl的Java类,实现了CarDao接口。这个类包含了以下方法:
1. uFindCar(int cuid):根据用户ID查询购物车信息。
2. sFindCar(int sid):根据商家ID查询购物车信息。
3. addCar(String cname, int cprice, int cfid, int cuid, int cdid):添加购物车。
4. updateCar(int cid, int cstate):更新购物车的状态。
5. delCar(int cid):删除指定的购物车。
- 点赞
- 收藏
- 关注作者
评论(0)