类图如下:
![https://box.kancloud.cn/ef0fe66249062b15d2efd7a8656ff362_1066x226.png](https://box.kancloud.cn/ef0fe66249062b15d2efd7a8656ff362_1066x226.png)
时序图如下:
![https://box.kancloud.cn/f11526a6e77c87f5e0ee4ff48d04405a_1360x552.png](https://box.kancloud.cn/f11526a6e77c87f5e0ee4ff48d04405a_1360x552.png)
我们参考时序图,进行代码的编写
```
/**
* 更新klass
* @param id
* @param name
* @param teacherId
*/
public static void updateKlassByIdNameTeacherId(Long id, String name, Long teacherId) {
KlassDao klassDao = new KlassDao();
Klass klass = (Klass)klassDao.get(id);
klass.setName(name);
klass.setTeacherId(teacherId);
klassDao.update(klass);
return;
}
```
# 测试
```
@Test
public void updateKlassByIdNameTeacherIdTest () {
Long id = 1L;
String name = "更新班级";
Long teacherId = 10L; // 注意,该值必须存在于Teacher表中。
KlassServer.updateKlassByIdNameTeacherId(id, name, teacherId);
// 获取这个班级信息
Klass klass = KlassServer.getKlassById(id);
assertEquals(klass.getId(), id); // 判断
assertEquals(klass.getName(), name); // 判断
}
```
在这,我们引用了Junit的assertEquals来判断期待的结果与返回的结果是否相同。
![https://box.kancloud.cn/e764fbf6ce515035e5d42a76ff1306de_1466x144.png](https://box.kancloud.cn/e764fbf6ce515035e5d42a76ff1306de_1466x144.png)
我们看到,没有报错,说明测试通过。
我们把最后一行代码改为:`assertEquals(klass.getName(), "zhangsan"); // 判断`
然后再试试看
> 在实际的开发中,制定一个合理的测试用例显示尤为重要。
<hr />
思索:如果将Long teacherId改为100, 则测试将会报错,说找不到100的Teacher实体。实际上也是这样,我们需要保证传入的teacherId必须是合法的。如果让你解决这个问题,你该怎么做呢?
- README
- 第一章:准备
- 第二章:Hello World!
- 第一节:查看工程文件
- 第二节:JDK、JRE与环境变量
- 第三节:index.jsp
- 第三章:Hello Struts
- 第一节:Web.xml
- 第二节:单入口
- 第三节:Hello Struts
- 第四节:触发C层
- 第四章:建立数据表
- 第一节:建立实体类
- 第二节:测试一
- 第三节:测试二
- 第四节:引入Hibernate
- 第五节:配置Hibernate
- 第六节:建立连接
- 第七节:实体类映射数据表
- 第八节:完善数据表
- 第五章:教师管理
- 第一节:增加数据--add
- 第二节:增加数据--save
- 1 获取传入数据数据
- 2 数据写入测试
- 3 对接C层
- 第三节:数据列表
- 1 获取数据
- 2 重构代码
- 3 C层对接--初始化
- 4 C层添加数据
- 5 V层显示数据
- 6 获取数据库中数据
- 7 显示性别
- 8 分页
- 9 条件查询
- 第四节:修改数据
- 1 edit
- 2 update
- 第五节:删除数据
- 第六节:总结
- 第六章:重构C层
- 第一节:继承ActionSupport类
- 第二节:数据验证
- 第七章:前台分离(前台)
- 第一节:环境搭建
- 第二节:运行环境
- 第三节:共享开发环境
- 第四节:生产环境
- 第八章:前台开发(前台)
- 第一节:本地化
- 第二节:教师列表
- 1 引入M层
- 2 模拟后台返回数据
- 3 C与M对接
- 4 C与V对接
- 第九章:前后台对接(前后台)
- 第一节:后台输出json(后台)
- 第二节:对接前台(全栈)
- 第二节:对接API(前台)
- 第二节:跨域请求(后台)
- 第三节:重构代码(前台)
- 第十章:重构后台M层
- 第一节:数据访问DAO层
- 第二节:项目整体重构
- 第十一章:用户登陆(前后台)
- 第一节:制定规范
- 第二节:定制测试用例
- 第三节:后台输入测试代码(后台)
- 第四节:postman(后台)
- 第五节:新建用户登陆模块(前台)
- 第六节:代码重构(前台)
- 第十二章:班级管理(前后台)
- 第一节:班级列表
- 1 原型开发
- 2 制定规范
- 3 后台对接开发
- 4 前台对接开发
- 第二节:Add
- 1 原型开发
- 2 制定规范
- 3 后台对接开发
- 4 前台对接开发
- 第三节:Save
- 1 制定规范
- 2 后台对接开发
- 3 前台对接开发
- 第四节:Edit
- 1 原型开发
- 2 制定规范
- 3 后台对接开发
- 4 前台对接开发
- 第五节:Update
- 1 制定规范
- 2 后台对接开发
- 3 前台对接开发
- 第六节:Delete
- 1 制定规范
- 2 后台对接开发
- 3 前台对接开发
- 第七节:小结
- 第十三章:班级管理(API)
- 第一节:ER图
- 第二节:create
- 1 实体层
- 2 dao层
- 3 service(server)层
- 4 action层
- 第三节:ManyToOne
- 第四节:Read
- 1 service(server)层
- 2 action层
- 第五节:update
- 1 service(server)层
- 2 action层
- 第六节:update
- 第十四章:重构服务层