博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis
阅读量:6247 次
发布时间:2019-06-22

本文共 2718 字,大约阅读时间需要 9 分钟。

各位小伙伴们好,前面我们一共写了7个配置文件,接下来我们用一个实例来完成!

SSM框架应用实例(图书管理系统)

一开始想就这样结束教程,但是发现其实很多人都还不会把这个SSM框架用起来,特别是mybatis部分。那我现在就以最常见的“图书管理系统”中【查询图书】和【预约图书】业务来做一个demo吧!

首先新建数据库名为ssm,再创建两张表:图书表book和预约图书表appointment,并且为book表初始化一些数据,sql如下。

  1. 获取源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!

  2. 616 959 444

schema.sql

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

在entity包中添加两个对应的实体,图书实体Book.java和预约图书实体Appointment.java。

Book.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

Appointment.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

在dao包新建接口BookDao.java和Appointment.java

BookDao.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

AppointmentDao.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

提示:这里为什么要给方法的参数添加@Param注解呢?是因为该方法有两个或以上的参数,一定要加,不然mybatis识别不了。上面的BookDao接口的queryById方法和reduceNumber方法只有一个参数book_id,所以可以不用加 @Param注解,当然加了也无所谓~

注意,这里不需要实现dao接口不用编写daoImpl, mybatis会给我们动态实现,但是我们需要编写相应的mapper。 在mapper目录里新建两个文件BookDao.xml和AppointmentDao.xml,分别对应上面两个dao接口,代码如下。

BookDao.xml

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

AppointmentDao.xml

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

Mapper总结:namespace是该xml对应的接口全名,select和update中的id对应方法名,resultType是返回值类型,parameterType是参数类型(这个其实可选),最后#{...}中填写的是方法的参数,看懂了是不是很简单!!我也这么觉得~ 还有一个小技巧要交给大家,就是在返回Appointment对象包含了一个属性名为book的Book对象,那么可以使用"book.属性名"的方式来取值,看上面queryByKeyWithBook方法的sql。

dao层写完了,接下来test对应的package写我们测试方法吧。 因为我们之后会写很多测试方法,在测试前需要让程序读入spring-dao和mybatis等配置文件,所以我这里就抽离出来一个BaseTest类,只要是测试方法就继承它,这样那些繁琐的重复的代码就不用写那么多了~

BaseTest.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

因为spring-service在service层的测试中会时候到,这里也一起引入算了!

新建BookDaoTest.java和AppointmentDaoTest.java两个dao测试文件。

BookDaoTest.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

BookDaoTest测试结果

testQueryById

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

testQueryAll

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

testReduceNumber

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

AppointmentDaoTest.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

  1. 获取源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!

  2. 616 959 444

####AppointmentDaoTest测试结果

testInsertAppointment

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

testQueryByKeyWithBook

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

嗯,到这里一切到很顺利那么我们继续service层的编码吧可能下面开始信息里比较大,大家要做好心理准备~

首先,在写我们的业务之前,我们先定义几个预约图书操作返回码的数据字典,也就是我们要返回给客户端的信息。我们这类使用枚举类,没听过的小伙伴要好好恶补一下了(我也是最近才学到的= =)

预约业务操作返回码说明

返回码 说明
1 预约成功
0 库存不足
-1 重复预约
-2 系统异常

新建一个包叫enums,在里面新建一个枚举类AppointStateEnum.java,用来定义预约业务的数据字典,没听懂没关系,我们直接看代码吧~是不是感觉有模有样了!

AppointStateEnum.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

接下来,在dto包下新建AppointExecution.java用来存储我们执行预约操作的返回结果。

AppointExecution.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

接着,在exception包下新建三个文件 NoNumberException.javaRepeatAppointException.javaAppointException.java预约业务异常类(都需要继承RuntimeException),分别是无库存异常、重复预约异常、预约未知错误异常,用于业务层非成功情况下的返回(即成功返回结果,失败抛出异常)。

NoNumberException.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

RepeatAppointException.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

AppointException.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

咱们终于可以编写业务代码了,在service包下新建BookService.java图书业务接口。

BookService.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

在service.impl包下新建BookServiceImpl.java使用BookService接口,并实现里面的方法。

BookServiceImpl

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

下面我们来测试一下我们的业务代码吧~因为查询图书的业务不复杂,所以这里只演示我们最重要的预约图书业务!!

BookServiceImplTest.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

BookServiceImplTest测试结果

testAppoint

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

首次执行是“预约成功”,如果再次执行的话,应该会出现“重复预约”,哈哈,我们所有的后台代码都通过单元测试啦~~是不是很开心~

咱们还需要在dto包里新建一个封装json返回结果的类Result.java,设计成泛型。

Result.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

最后,我们写web层,也就是controller,我们在web包下新建BookController.java文件。

BookController.java

后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis

因为我比较懒,所以我们就不测试controller了,好讨厌写前端,呜呜呜~

  1. 获取源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!

  2. 616 959 444

到此,我们的SSM框架整合配置,与应用实例部分已经结束了,这篇东西写了两个晚上也不容易啊

感谢各位的陪伴,觉得可以的话,点下关注哦!需要学习Java的可以加一下!

转载地址:http://ublia.baihongyu.com/

你可能感兴趣的文章
UMeditor上传图片配置
查看>>
Homestead小结
查看>>
2015年iOS开发总结
查看>>
CocoaPods 安装与使用
查看>>
学习笔记:查最大内存
查看>>
javascript设计模式与开发实践(二)- 封装和原型模式
查看>>
1475: 方格取数
查看>>
太阳黑子
查看>>
[转载]date命令时间转换
查看>>
适配iOS11新特性代码在Xcode8 上编译通过的方法
查看>>
别再问什么是Java内存模型了,看这里!
查看>>
2014.5.7—20岁这几年
查看>>
javac - Java programming language compiler
查看>>
异常处理
查看>>
Python多线程程序中的MYSQL连接管理研究
查看>>
Prometheus学习系列(七)之名词解析
查看>>
一文彻底搞懂Dart的event队列
查看>>
iOS面试题06-其他
查看>>
JSON和JSONP
查看>>
2019年互联网女皇趋势报告:小程序创新创业商业模式引领全球
查看>>