本文共 2718 字,大约阅读时间需要 9 分钟。
各位小伙伴们好,前面我们一共写了7个配置文件,接下来我们用一个实例来完成!
一开始想就这样结束教程,但是发现其实很多人都还不会把这个SSM框架用起来,特别是mybatis部分。那我现在就以最常见的“图书管理系统”中【查询图书】和【预约图书】业务来做一个demo吧!
首先新建数据库名为ssm,再创建两张表:图书表book和预约图书表appointment,并且为book表初始化一些数据,sql如下。
获取源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!
616 959 444
在entity包中添加两个对应的实体,图书实体Book.java和预约图书实体Appointment.java。
在dao包新建接口BookDao.java和Appointment.java
提示:这里为什么要给方法的参数添加@Param注解呢?是因为该方法有两个或以上的参数,一定要加,不然mybatis识别不了。上面的BookDao接口的queryById方法和reduceNumber方法只有一个参数book_id,所以可以不用加 @Param注解,当然加了也无所谓~
注意,这里不需要实现dao接口不用编写daoImpl, mybatis会给我们动态实现,但是我们需要编写相应的mapper。 在mapper目录里新建两个文件BookDao.xml和AppointmentDao.xml,分别对应上面两个dao接口,代码如下。
Mapper总结:namespace是该xml对应的接口全名,select和update中的id对应方法名,resultType是返回值类型,parameterType是参数类型(这个其实可选),最后#{...}中填写的是方法的参数,看懂了是不是很简单!!我也这么觉得~ 还有一个小技巧要交给大家,就是在返回Appointment对象包含了一个属性名为book的Book对象,那么可以使用"book.属性名"的方式来取值,看上面queryByKeyWithBook方法的sql。
dao层写完了,接下来test对应的package写我们测试方法吧。 因为我们之后会写很多测试方法,在测试前需要让程序读入spring-dao和mybatis等配置文件,所以我这里就抽离出来一个BaseTest类,只要是测试方法就继承它,这样那些繁琐的重复的代码就不用写那么多了~
因为spring-service在service层的测试中会时候到,这里也一起引入算了!
新建BookDaoTest.java和AppointmentDaoTest.java两个dao测试文件。
testQueryById
testQueryAll
testReduceNumber
获取源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!
616 959 444
testInsertAppointment
testQueryByKeyWithBook
嗯,到这里一切到很顺利那么我们继续service层的编码吧可能下面开始信息里比较大,大家要做好心理准备~
首先,在写我们的业务之前,我们先定义几个预约图书操作返回码的数据字典,也就是我们要返回给客户端的信息。我们这类使用枚举类,没听过的小伙伴要好好恶补一下了(我也是最近才学到的= =)
预约业务操作返回码说明
返回码 | 说明 |
---|---|
1 | 预约成功 |
0 | 库存不足 |
-1 | 重复预约 |
-2 | 系统异常 |
新建一个包叫enums,在里面新建一个枚举类AppointStateEnum.java,用来定义预约业务的数据字典,没听懂没关系,我们直接看代码吧~是不是感觉有模有样了!
接下来,在dto包下新建AppointExecution.java用来存储我们执行预约操作的返回结果。
接着,在exception包下新建三个文件 NoNumberException.javaRepeatAppointException.javaAppointException.java预约业务异常类(都需要继承RuntimeException),分别是无库存异常、重复预约异常、预约未知错误异常,用于业务层非成功情况下的返回(即成功返回结果,失败抛出异常)。
咱们终于可以编写业务代码了,在service包下新建BookService.java图书业务接口。
在service.impl包下新建BookServiceImpl.java使用BookService接口,并实现里面的方法。
下面我们来测试一下我们的业务代码吧~因为查询图书的业务不复杂,所以这里只演示我们最重要的预约图书业务!!
testAppoint
首次执行是“预约成功”,如果再次执行的话,应该会出现“重复预约”,哈哈,我们所有的后台代码都通过单元测试啦~~是不是很开心~
咱们还需要在dto包里新建一个封装json返回结果的类Result.java,设计成泛型。
最后,我们写web层,也就是controller,我们在web包下新建BookController.java文件。
因为我比较懒,所以我们就不测试controller了,好讨厌写前端,呜呜呜~
获取源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!
616 959 444
到此,我们的SSM框架整合配置,与应用实例部分已经结束了,这篇东西写了两个晚上也不容易啊
感谢各位的陪伴,觉得可以的话,点下关注哦!需要学习Java的可以加一下!
转载地址:http://ublia.baihongyu.com/