工具
- IDE 为 idea16
- JDK 环境为 1.8
- gradle 构建,版本:2.14.1
- Mysql 版本为 5.5.27
- Tomcat 版本为 7.0.52
- 流程图绘制(xmind)
- 建模剖析软件 PowerDesigner16.5
- 数据库工具 MySQLWorkBench,版本:6.3.7build
本期指标
- mybatis 一些简略的进阶应用
- 日志性能的记录
- 文章公布
- 草稿保留
上期咱们通过对数据库的剖析,仔仔细细的摸索了一遍 WordPress 程序运行时候文章提交和草稿提交的区别和共同点,简略的概括下如下:
- 文章和草稿区别是 postType 不同
- 文章和草稿都有日志记录
- 日志的 postStatus 都是 closed
- 日志的 postParent 始终是指向其文章的 id
···
更为具体的文章,倡议去我的上一篇文章查看。
既然咱们曾经大略明确了怎么去实现,那么当初咱们须要的就是进行试验。
首先老规矩,先从咱们的 dao 层实现开始,咱们争取把各个功能模块解耦,那么咱们就不能过于在 dao 层限度,所以咱们须要在 dao 层实现数据(文章、草稿、历史记录)插入。所以咱们学生成 dao 接口如下:
下面的语句中咱们能够看到在 mapper 的 insert 语句块中咱们插入了 selectKey 语句块,次要是用来返回咱们插入的条目标自增 id。为什么这里咱们非要获取到插入的 id 呢?次要是文章生成后的日志记录都是须要文章 id 能力生成对应的日志记录。
同时在 inset 语句块中,咱们应用了 choose+when 语句块生成了动静 sql,这样就能动静的抉择程序执行。
同时在下面的代码中咱们能够看到下面的 when 和上面的 when 语句块中对于 bean 的属性获取应用形式不一样!
重点:扩大类型,要应用父类的属性时,必须是对象名. 属性名的模式,对象名从 dao 的接口设置。(否则间接应用属性的时候,会异样提醒空指针,且提醒对象的属性中没有该属性)
小技巧:
1. 在 mapper 中应用属性时,最好是对象名. 属性名的形式,同时在 dao 层中设置对象的名称(在咱们下面 dao 层的 add 接口中有阐明)
2.mybatis 的动静 sql 能够缩小很多额定的办法和 mapper 中的 sql 编写,所以必须把握动静 sql
3. 当属性较多的时候,咱们肯定不能遗记单元测试,单元测试能够简略直观的理解到哪里出错,缩小在后续开发中谬误查看的工夫。
下面咱们也是提到过单元测试,那么咱们当初看看这个 dao 的单元测试应该如何实现呢?
首先给大家看看咱们文章的 bean:
说实话,一看到这里的时候,我也很惆怅。眉头一皱; 计上心来,感觉能够祭出这个系列教程咱们本人手写的第一个设计模式了!开启咱们的 javaBean 的建造者模式。
那么咱们 ben 生成好了后,咱们就须要开始写咱们的单元测试,如下:
大家能够看到下面咱们的 PostCustom 还是从咱们本人手动封装的 PostInitUtils 中获取的,同时咱们的 PostCustom 还是咱们的 PostBean 的子类。所以这里就用到了传说中的 pojo 包装类型相干的一些常识(咱们这里并没有包装,不过曾经用到了扩大类),让咱们接着看看 PostInitUtils 的代码:
这里咱们能够看到咱们对外开放的外围也就文章外围信息相干的一些货色了,那么这样咱们就能很好的控制数据。
当初咱们能够看下数据库,最新多进去的数据和文章首页插入的数据如下:
咱们明天的骨干内容到此根本实现,剩下的从 dao 到前台界面适配等等基本上骚年们本人都能够实现至此不在赘述。