1、管家婆家庭记账项目
2、熟练View层、Service层、Dao层之间的方法相互调用操作
3、熟练dbutils操作数据库表完成增删改查
01项目训练目标
- A: 项目训练目标
- a: 项目目标
- 综合运用前面所学习的知识点
- 熟练View层、Service层、Dao层之间的方法相互调用操作、
- 熟练dbutils操作数据库表完成增删改查
- 了解公司项目开发的流程,充分的掌握项目需求分析、设计与功能的代码实现。提高同学们独立分析需求与功能实现的能力。
02项目中的功能模块
- A: 项目中的功能模块
- a: 五大模块
- 查询账务
- 多条件组合查询账务
- 添加账务
- 编辑账务
- 删除账务
03技术的选择和相关jar包
- A: 技术的选择和相关jar包
- a: apache的commons组件:
….. commons-dbutils-1.4.jar:封装并简化了JDBC;
….. commons-dbcp-1.4.jar:apache commons提供的数据库连接池组件,命名为DBCP; - b:
….. commons.pool-1.3.jar:DBCP连接池依赖该jar包;
….. mysql-connector-java-5.1.28-bin.jar:MySQL的JDBC驱动包,用JDBC连接MySQL数据库必须使用该JAR包。
04项目中的工具类
- A: 项目中的工具类
- a: 工具类的介绍
- 每个项目中都会有很多个工具类,不要求每个工具类对能独立写出来,但是要会使用工具类
- JDBCUtils:用来创建数据库连接池对象
1 | public class JDBCUtils { |
05数据表的设计
- A: 数据表的设计
- a: 数据表的设计
- 表与表之间是有关系的
- 主表和从表的关系
- 主表中的主键作为从表中的外键
06创建数据库数据表写入测试数据
1 | * A: 创建数据库数据表写入测试数据 |
07项目中的分层设计
- A: 项目中的分层设计
- a: 各层功能介绍
….. view层作用: 视图层,即项目中的界面
….. controller层作用: 控制层, 获取界面上的数据,为界面设置数据; 将要实现的功能交给业务层处理
….. service层作用: 业务层, 功能的实现, 与controller控制层和数据访问层DAO交互, 将对数据库的操作交给DAO数据访问层来处理
….. dao层作用: 数据访问层, 用来操作数据库表的数据
……. database数据库: 这里指MySQL
……. domain 实体包: 存放JavaBean
……. tools工具包:存放项目中使用到的工具类
……. test 测试包: 存放项目功能测试的代码
08创建项目_分层_导入jar包
1 | * A: 创建项目_分层_导入jar包 |
首先,完成本项目中类的创建:
- 复制已编写好的工具类JDBCUtils.java 到 tools包中;
- 复制jar包mysql-connector-java-5.1.28-bin.jar、commons-dbutils-1.4.jar、commons-dbcp-1.4.jar、commons-pool-1.3.jar,到lib文件夹中,通过Build Path操作,添加到classPath路径中,提供给JDBCUtils使用;
- 在app包中,创建类MainApp.java,编写main主方法,用来完成本项目的启动
- 在domain包中,创建类ZhangWu.java,它是用来封装账务信息的JavaBean。
- 在dao包中,创建类ZhangWuDao.java,给ZhangWuDao类添加一个成员变量QueryRunner对象,因为我们使用dbutils来操作数据库。
- 在service包中,创建类ZhangWuService.java,给ZhangWuService类添加一个类型为ZhangWuDao的成员变量,因为service依赖dao。
- 在view包中,创建类MainView.java,给MainView类添加一个类型为ZhangWuService的成员变量,因为本项目中view依赖service。
09创建domain包中的类
1 | * A: 创建domain包中的类 |
10创建JDBCUtils工具类
1 | * A:创建JDBCUtils工具类 |
11创建其他包中的类
1 | * A: 创建其他包中的类 |
12实现用户的界面菜单
1 | * A: 实现用户的界面菜单 |
13实现查询的界面菜单
1 | * A: 实现查询的界面菜单 |
14实现查询所有账务的控制,业务层的实现
1 | * A: 实现查询所有账务的控制,业务层的实现 |
15实现查询所有账务的dao层的实现
1 | * A: 实现查询所有账务的dao层的实现 |
16实现查询所有账务的view层的实现
1 | * A: 实现查询所有账务的view层的实现 |
17实现条件查询账务的菜单实现
1 | * A: 实现条件查询账务的菜单实现 |
18实现条件查询账务的控制层,业务层实现
1 | * A: 实现条件查询账务的控制层,业务层实现 |
19实现条件查询账务的dao层实现
1 | * A: 实现条件查询账务的dao层实现 |
20实现条件查询账务的view层实现
1 | * A: 实现条件查询账务的view层实现 |
21添加账务功能分析
- A: 添加账务功能分析
- a: 编写MainView类中addZhangWu方法
….. 键盘输入新添加的账务信息
….. 调用ZhangWuService类中addZhangWu方法,用来指定账务的添加
…..* 添加完毕后,使用输出语句,提示“添加账务成功!” - b: 编写ZhangWuService类中addZhangWu方法
…..* 调用ZhangWuDao类中addZhangWu方法,用来指定账务的添加 - c: 编写ZhangWuDao类中addZhangWu方法
…..* 通过QueryRunner对象,调用update方法更新数据库表gjp_zhangwu,完成指定账务添加到数据库表中
22添加账务功能菜单和输入功能实现
1 | * A: 添加账务功能菜单和输入功能实现 |
23添加账务功能控制层,业务层实现
1 | * A: 添加账务功能控制层,业务层实现 |
24添加账务功能dao层实现
1 | * A: 添加账务功能dao层实现 |
25添加账务功能view层实现
1 | * A: 添加账务功能view层实现 |
26编辑账务功能分析
- A: 编辑账务功能分析
- a: 编写MainView类中editZhangWu方法
….. 键盘输入要编辑的账务信息ID号
….. 键盘输入要修改的账务信息内容
….. 调用ZhangWuService类中editZhangWu方法,用来将指定的账务信息进行更新
….. 更新完毕后,使用输出语句,提示 “编辑账务成功!” - b: 编写ZhangWuService类中editZhangWu方法
…..* 调用ZhangWuDao类中editZhangWu方法,用来将指定的账务信息进行更新 - c: 编写ZhangWuDao类中editZhangWu方法
…..* 通过QueryRunner对象,调用update方法更新数据库表gjp_zhangwu,完成数据库表中指定账务更新操作
27编辑账务功能功能之前实现查询所有
1 | * A: 编辑账务功能功能之前实现查询所有 |
28编辑账务功能菜单实现
1 | * A: 编辑账务功能菜单实现 |
29编辑账务功能控制层,业务层实现
1 | * A: 编辑账务功能控制层,业务层实现 |
30编辑账务功能dao层实现
1 | * A:编辑账务功能dao层实现 |
31编辑账务功能view层实现
1 | * A: 编辑账务功能view层实现 |
32删除账务功能分析
- A: 删除账务功能分析
- a: 编写MainView类中deleteZhangWu方法
….. 键盘输入要删除的账务信息ID号
….. 调用ZhangWuService类中deleteZhangWu方法,用来将指定的账务信息删除
…..* 删除完毕后,使用输出语句,提示 “删除账务成功!” - b: 编写ZhangWuService类中deleteZhangWu方法
…..* 调用ZhangWuDao类中deleteZhangWu方法,用来将指定的账务信息删除 - c: 编写ZhangWuDao类中deleteZhangWu方法
…..* 通过QueryRunner对象,调用update方法更新数据库表gjp_zhangwu,完成数据库表中指定账务删除操作
33删除账务功能菜单实现
1 | * A: 删除账务功能菜单实现 |
34删除账务功能控制层,业务层实现
1 | * A: 删除账务功能控制层,业务层实现 |
35删除账务功能dao实现
1 | * A: 删除账务功能dao实现 |
36删除账务功能view层实现
1 | * A: 删除账务功能view层实现 |
37总结
…..view层的作用是“界面”,用来完成数据显示给用户。当前项目view层中,包含了Controller层代码。
…..Controller层的作用是“调度”,调度的是表现层view和业务层Service,主要功能分为:一是把表现层的数据交给业务层处理;二是把业务层返回的数据交给表现层显示。
…..Service层的作用是“业务”,我们也可以把“业务”当成是“功能”。今后要写的大型项目代码量最大的就是Service层。
…..DAO层是操作数据库,现在我们使用的是commons-dbutils工具来简化JDBC,所以我们发现代码不多,比较简单。最后我们还会学习其他DAO层的工具,例如:hibernate和mybatis,他们都是JDBC的封装,用来简化JDBC。